gpt4 book ai didi

Django:具有 blank=True、null=True、unique=True 的模型字段给管理员带来麻烦

转载 作者:行者123 更新时间:2023-12-01 15:24:14 25 4
gpt4 key购买 nike

我有一个模型,我有:

ipv4_address = models.IPAddressField(verbose_name=_('ipv4 address'), blank=True, null=True, unique=True, default=None)
ipv6_address = models.GenericIPAddressField(protocol='IPv6', verbose_name=_('ipv6 address'), blank=True, null=True, unique=True, default=None)

并给我这里描述的麻烦:https://code.djangoproject.com/ticket/4136

我该如何解决这个问题?

我正在考虑制作一个自定义的 GenericIPAddressField,它将 NULL 而不是空字符串插入到数据库中。你怎么认为?还有其他可能的解决方案吗?

最佳答案

您对自定义字段 GenericIPAddressField 的建议可能是最干的解决方案。 akonsu 在上面的评论中建议覆盖保存方法是一个很好的建议。我使用的一个快速技巧是将模型表单中的值清除为 None

class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel

def clean_ipv6_address(self):
"""
Return None instead of empty string
"""
return self.cleaned_data.get('ipv6_address') or None

如果您通过 django 管理员编辑模型,请在那里使用您的模型表单

#!admin.py
class MyModelAdmin(admin.ModelAdmin):
form = MyModelForm

admin.site.register(MyModel, MyModelAdmin)

关于Django:具有 blank=True、null=True、unique=True 的模型字段给管理员带来麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7742845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com