如何在django中使用ModelChoiceField创建添加按钮?

如何在django中使用ModelChoiceField创建添加按钮?,django,django-forms,Django,Django Forms,IP和System具有一对一的关系 我已经创建了自定义表单 class SystemAdminForm(ModelForm): address = ModelChoiceField(IP.objects.filter(system=None)) class Meta: model = System 这就是我现在使用它的方式 class SystemAdmin(ModelAdmin): form = SystemAdminForm 我想要两件事: IP字段不应显示,地

IP
System
具有一对一的关系

我已经创建了自定义表单

class SystemAdminForm(ModelForm):
    address = ModelChoiceField(IP.objects.filter(system=None))

class Meta:
    model = System
这就是我现在使用它的方式

class SystemAdmin(ModelAdmin):
    form = SystemAdminForm
我想要两件事:

IP
字段不应显示,地址字段应具有+按钮

我该怎么做

class IPAdmin(ModelAdmin):
    fields = ['name', 'ip']

    def has_add_permission(self, request):
        return True

class SystemAdmin(ModelAdmin):
    form = SystemAdminForm

    def has_add_permission(self, request):
        return True

admin.site.register(System, SystemAdmin)
admin.site.register(IP, IPAdmin)


我认为这是删除ip字段的解决方案:

class Meta:
    model = System
    exclude = ["ip"]
要使用+按钮,您需要在AddressAdmin中重写此函数

class AddressAdmin(ModelAdmin):
    def has_add_permission(self, request):
        return True
admin.site.register(Adress, AddressAdmin)

IP已经是一个
modelcoocefield
,您有什么问题吗?IP.objects.filter(system=None)您的意思是
exclude=(“IP”)
?[“IP”]对不起,我错了。请在管理员中注册地址模型以获得加号。第一个建议有效,谢谢。但是对于第二个问题,你的回答建议和评论建议都不起作用。什么是地址模式?我认为has_add_权限应该放在address admin模型中。我修改了我的答案。