我在 django-admin 方面遇到问题。我有三个对象:
- 描述
- 工作
- 项目
我想直接在作业和项目中编辑描述。
这是我的model.py
:
class Description(models.Model):
short_desc = models.TextField()
long_desc = models.TextField()
class Job(models.Model):
location = models.TextField()
desc = models.ForeignKey(Description)
class Project(models.Model):
name = models.TextField()
desc = models.ForeignKey(Description)
因此,从概念上讲,Description
是 Job
和 Project
的父级。
还有我的admin.py
:
class DescriptionInLine(admin.StackedInline):
model = Description
@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
model = Project
inlines = [DescriptionInLine]
@admin.register(Job)
class JobAdmin(admin.ModelAdmin):
model = Job
inlines = [DescriptionInLine]
每当我运行 django 服务器时,都会收到以下错误:
<class 'admin.DescriptionInLine'>: (admin.E202) 'Description' has no ForeignKey to 'Job'.
我明白为什么会收到错误:django 期望关系以另一种方式存在。
我还尝试用 OneToOneField
替换 ForeignKey
,但没有成功。
知道如何解决这个问题吗?
最佳答案
您会收到此错误,因为内联旨在用于另一个方向(请参阅 this question )。
我认为对于您的用例,您最好使用 model inheritance :
class Description(models.Model)
class Meta:
abstract = True
# Abstract is optional but I think for your usecase,
# standalone `Description` does not make any sense.
# If not `abstract`, a one-to-one relation will be implied
# between parent and children
short_desc = models.TextField()
long_desc = models.TextField()
class Job(Description):
location = models.TextField()
class Project(Description):
name = models.TextField()
关于python - Django 编辑子级中父级的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38245087/