Есть два способа сделать это.Первый - пометить весь столбец как 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