从 django 管理员中删除添加另一个

Avi*_*Avi 6 python django django-models django-admin

我在 Django admin 中有一个内联模型,它OneToOneField与父级有关系。

class Child(models.Model):
 parent = models.OneToOneField(Parent)
 received_on = models.DateField(null=True,)
Run Code Online (Sandbox Code Playgroud)

在 admin Inline 我不想显示“添加另一个按钮”,所以我做了这样的事情:-

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

    def has_add_permission(self, request):
         return False
Run Code Online (Sandbox Code Playgroud)

但它仍然显示添加另一个按钮问题与父级的关系,因为OneToOneField如果我尝试ForeignKey使用相同的代码添加另一个按钮没有显示但OneToOneField它总是显示。

任何人都可以建议我它是如何工作的以及我可以做些什么来从内联子项中删除添加另一个按钮?

我可以在父级中内联添加模型,但我的问题与如何从内联模型中删除“添加另一个按钮”有关。

小智 8

只需添加max_num=0或您想要的

class CampaignInfluencerShippingTrackingInline(admin.TabularInline):
    model = Child
    can_delete = False
    extra = 0
    max_num=0
    fields = ['received_on']
Run Code Online (Sandbox Code Playgroud)


Ada*_*lor 0

您希望用户能够Child使用内联添加恰好一个,对吧?这应该有效,然后:

class CampaignInfluencerShippingTrackingInline(admin.TabularInline):
    model = Child
    can_delete = False
    fields = ['received_on']
Run Code Online (Sandbox Code Playgroud)

extra = 0可能就是让你绊倒的原因。当你添加它时,没有任何形式是可见的;仅内嵌的标题(“Childs”)、表格标题(“Received on”)和“Add another Child”链接。单击该链接后,该链接将消失并显示该表单。因此,事实上,如您所料,它仅限于一个孩子。