Django admin:编辑一对一模型类的字段

时间:2016-08-05 11:14:40

标签: python django django-models django-forms django-admin

我有两个模型,在models.py中定义了以下关系:

class InnerModel(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

class OuterModel(models.Model):
    inner = models.OneToOneField(InnerModel)

    def __str__(self):
        return "OuterModel"

我的forms.py看起来像这样:

class OuterModelForm(forms.ModelForm)
    class Meta:
        model = OuterModel
        fields = ['inner']

我的admin.py表单如下所示:

class OuterModelAdmin(admin.ModelAdmin)
    form = OuterModelForm

admin.site.register(OuterModel, OuterModelAdmin)

当我显示管理页面时,我可以看到InnerModel实例和名称字段,但名称字段是一个空的下拉菜单,而不是可以编辑的空白文本字段。

如何更改InnerModel名称字段,以便管理员可以对其进行编辑?

1 个答案:

答案 0 :(得分:1)

您需要使用inlinesdoc):

class InnerModelInline(admin.StackedInline):
    model = InnerModel

class OuterModelAdmin(admin.ModelAdmin):
    inlines = [InnerModelInline]

admin.site.register(OuterModel, OuterModelAdmin)

类似的问题:here