2017-12-18 180 views
1

我有一個內聯模型在Django管理員是有OneToOneField與父母的關係。刪除添加另一個來自django管理員

class Child(models.Model): 
parent = models.OneToOneField(Parent) 
received_on = models.DateField(null=True,) 

在管理內嵌我不想顯示「添加另一個按鈕」,所以我做了這樣的事情: -

class CampaignInfluencerShippingTrackingInline(admin.TabularInline): 
    model = Child 
    can_delete = False 
    extra = 0 
    fields = ['received_on'] 

    def has_add_permission(self, request): 
     return False 

但仍表現出增加另一個按鈕的問題是與與父母的關係,因爲它有OneToOneField如果我用ForeignKey與相同的代碼嘗試添加另一個按鈕不顯示,但與OneToOneField它總是顯示。

任何人都可以告訴我它是如何工作的,我可以做些什麼來刪除從嵌入式的孩子添加另一個按鈕?

我可以在父級添加模型內聯,但我的問題是相關如何從內聯模型中刪除「添加另一個按鈕」。

+0

您需要覆蓋模板/ admin/edit_inline/stacked.html或模板/ admin/edit_inline/tabular.html從django-admin爲您需要添加** template **文件夾(django-admin文件夾的確切副本模板文件夾)並覆蓋內部模板/ html文件,該文件具有該按鈕代碼。找不到這個變化的django文檔。 –

回答

0

您希望用戶能夠使用內聯正好添加一個Child,對不對?這應該工作,則:

class CampaignInfluencerShippingTrackingInline(admin.TabularInline): 
    model = Child 
    can_delete = False 
    fields = ['received_on'] 

extra = 0大概是什麼絆倒你。當你包含它時,沒有形式可見;只有內聯標題(「Childs」),表格標題(「Received on」)和「添加另一個孩子」鏈接。一旦你點擊鏈接,鏈接將消失,表格將出現。所以它實際上只限於一個孩子,就像你期望的那樣。

+0

我想從統一管理中刪除添加選項,只能使用API​​添加子項。 – Avi

相關問題