Django:一起需要吗?
你知道吗Django:一起需要吗?,django,django-models,Django,Django Models,你知道吗 unique_together = ("name", "date") 必填字段是否存在类似的内容 我有两个字段:ipv4和ipv6。 地图上有不同的无线网络,我们称之为“孤岛”,因为它们不是通过物理方式连接的,而是通过VPN隧道连接的 一些孤岛使用ipv4,并且正在实施ipv6,而其他孤岛仅使用ipv6。 如果我将ipv4设置为required,那么对于那些仅为ipv6的用户来说,这将是一个问题;如果我将ipv6设置为required,那么主要为ipv4的用户将遇到问题 我可以做两件
unique_together = ("name", "date")
必填字段是否存在类似的内容
我有两个字段:ipv4和ipv6。
地图上有不同的无线网络,我们称之为“孤岛”,因为它们不是通过物理方式连接的,而是通过VPN隧道连接的
一些孤岛使用ipv4,并且正在实施ipv6,而其他孤岛仅使用ipv6。
如果我将ipv4设置为required,那么对于那些仅为ipv6的用户来说,这将是一个问题;如果我将ipv6设置为required,那么主要为ipv4的用户将遇到问题
我可以做两件事:将两个字段都设置为非必需字段,或者将其设置为至少必须填写其中一个字段
第一个解决方案很简单,但不是很好,而第二个很好,但我不知道如果不攻击django是否可能
该应用程序是开源的
资料来源:
演示:您可以为您的模型编写一个
clean
方法。无论何时清理模型表单(包括django管理员),都会调用该函数
from django.core.exceptions import ValidationError
class MyModel(model.Model):
<field definitions>
def clean(self):
"""
Require at least one of ipv4 or ipv6 to be set
"""
if not (self.ipv4 or self.ipv6):
raise ValidationError("An ipv4 or ipv6 address is required")
来自django.core.exceptions的导入验证错误
类MyModel(model.model):
def清洁(自清洁):
"""
要求至少设置ipv4或ipv6中的一个
"""
如果不是(self.ipv4或self.ipv6):
raise ValidationError(“需要ipv4或ipv6地址”)
有关更多详细信息,请参阅上的文档