2017-12-18 143 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

相关问题