【发布时间】:2015-07-05 17:51:07
【问题描述】:
我有一个问题,我必须从管理页面为给定用户存储两个 IP 字段。 我的用户模型定义如下:
class userIPs(models.Model):
IP_Address_1 = models.GenericIPAddressField(blank=False)
IP_Address_2 = models.GenericIPAddressField(blank=False)
class Meta:
unique_together = (('IP_Address_1', 'IP_Address_2',),)
或
IP_Address_1 = models.GenericIPAddressField(blank=False, unique = True)
IP_Address_2 = models.GenericIPAddressField(blank=False, unique = True)
使用任一实现,我只能检查一个特定 IP 字段的唯一性。
例如:如果 user1 具有以下值,
IP_Address_1 = 10.0.0.1; IP_Address_2 = 10.0.0.2
如果我尝试添加相同的值,系统会按预期引发异常。 但是,当我尝试添加其他用户值时,例如
IP_Address_1 = 10.0.0.2; IP_Address_2 = 10.0.0.1
值的添加没有任何唯一性检查。
我想通过检查 IP_Address_1 和 IP_Address_2 来确保 IP 是唯一的。 有没有办法检查多个字段的唯一性?
谢谢!
【问题讨论】:
-
您要检查(IP1 和 IP2)是否是唯一的,还是任何地址都必须是唯一的?换句话说:如果用户 1 拥有 IP1 和 IP2,那么拥有 IP1 和 IP3 的用户 2 应该通过吗?
-
我希望所有用户的 IP 地址都是唯一的。即,如果用户1有IP1、IP2,那么用户2必须有IP3、IP4等等
-
然后将模型重构为每个模型(行)只有一个 IP 地址,使其唯一,并确保在其他地方单个用户拥有的实例不超过 2 个。
标签: python django python-2.7 django-models