是否有另一种REGEX方式(或其他方式)来确保模型类字段是唯一的? (它不是一把钥匙,或者至少没有被宣布为钥匙,应该是一个简单的CharField)
由于
答案 0 :(得分:15)
使单个字段唯一的常规方法是使用字段构造函数的unique
参数。
答案 1 :(得分:2)
如果您需要在多个字段中使其唯一,请查看: http://webdriver.io/
答案 2 :(得分:0)
有两种方法。
第一种是将整个列标记为unique
。例如:
product_name = models.Charfield(max_length=10, unique=True)
如果您希望整个列在本质上是唯一的,而不管情况如何,则此方法很好。可以用于username
,id
,key
等。
但是,如果该列不能固有地唯一,但是相对于其他列必须是唯一的,则必须使用手动方式。
from django.core.exceptions import ObjectDoesNotExist
try:
n = WishList.objects.get(user=sample_user, product=sample_product)
# already exists
return False
except ObjectDoesNotExist:
# does not exist
wish_list = WishList(user=sample_user, product=sample_product)
wish_list.save()
return True
以这个为例。您有一个愿望清单,其中没有一项是唯一的。一个用户可以拥有多个产品,而一个产品可以位于许多用户的愿望清单中。但是,单个用户不能一次将一个特定产品添加到他或她的愿望清单中。这是无法使用unique=True
的地方,我们必须使用try
和except