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地址”)
有关更多详细信息,请参阅上的文档