django独特的领域

时间:2010-07-03 19:18:05

标签: django unique field

是否有另一种REGEX方式(或其他方式)来确保模型类字段是唯一的? (它不是一把钥匙,或者至少没有被宣布为钥匙,应该是一个简单的CharField)

由于

3 个答案:

答案 0 :(得分:15)

使单个字段唯一的常规方法是使用字段构造函数的unique参数。

答案 1 :(得分:2)

如果您需要在多个字段中使其唯一,请查看: http://webdriver.io/

答案 2 :(得分:0)

有两种方法。 第一种是将整个列标记为unique。例如: product_name = models.Charfield(max_length=10, unique=True)

如果您希望整个列在本质上是唯一的,而不管情况如何,则此方法很好。可以用于usernameidkey等。

但是,如果该列不能固有地唯一,但是相对于其他列必须是唯一的,则必须使用手动方式。

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的地方,我们必须使用tryexcept