2016-08-05 100 views
0

我有兩個型號,在models.py定義如下關係:Django管理:一個到一個模型類的編輯領域

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

您需要使用inlinesdoc):

class InnerModelInline(admin.StackedInline): 
    model = InnerModel 

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

admin.site.register(OuterModel, OuterModelAdmin) 

類似的問題:here

+0

是否有這樣做沒有內聯的方式? – user12066

+0

不是我知道的,沒有。 – Siegmeyer

+0

謝謝 - 我應該在我的問題中指定無內聯請求,我看到有很多涉及內聯的SO問題。 – user12066

相關問題