【问题标题】:Django admin: Edit fields of one-to-one model classDjango admin:编辑一对一模型类的字段
【发布时间】:2016-12-11 18:57:22
【问题描述】:

我有两个模型,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 名称字段以便管理员可以对其进行编辑?

【问题讨论】:

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


    【解决方案1】:

    你需要使用inlinesdoc):

    class InnerModelInline(admin.StackedInline):
        model = InnerModel
    
    class OuterModelAdmin(admin.ModelAdmin):
        inlines = [InnerModelInline]
    
    admin.site.register(OuterModel, OuterModelAdmin)
    

    类似问题:here

    【讨论】:

    • 没有内联有没有办法做到这一点?
    • 我不知道,没有。​​
    • 谢谢 - 我应该在我的问题中指定非内联请求,我看到有很多涉及内联的 SO 问题。
    猜你喜欢
    • 2014-07-10
    • 2016-12-19
    • 1970-01-01
    • 2020-12-11
    • 2018-10-26
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多