#python #mysql #django #django-models
Вопрос:
Когда я нажму на кнопку сохранить, она проверит эти данные в базе данных, прежде чем сохранять их в Django. поиск данных в базе данных перед вставкой в администрирование Django. Я не хочу сохранять те же данные, которые уже сохранены в базе данных.
вот так: Здесь Главная экономия в два раза. Но я хочу, чтобы, если дом уже сохранен, то во второй раз, когда я попытаюсь сохранить то же имя, оно не сохранится. Как я могу это закодировать?
models.py
class Brand(models.Model):
brand_id = models.id = models.AutoField(primary_key=True, auto_created=True)
brand_name = models.CharField(max_length=50)
brand_date = models.DateTimeField(auto_now_add=True, null=False)
Комментарии:
1. добавить
unique=True
brand_name
к. также вам не нужно указывать brand_id, у каждого объекта в вашей базе данных будет поле автоматического идентификатора2. Спасибо, @hansTheFranz Я новичок в python. Так что я все еще учусь.
Ответ №1:
Вы можете добавить unique=True
, чтобы избежать дублирования:
brand_name = models.CharField(max_length=50, unique=True)
Комментарии:
1. Я новичок в python. Так что я все еще учусь. Спасибо @C14L
Ответ №2:
Используйте unique=True
, если вам нужно уникальное поле.
Поскольку вы новичок в python, в будущем могут пригодиться следующие приемы
Предположим, вы хотите, чтобы комбинация полей была уникальной, вы можете добавить ограничения в Мета
class Brand(models.Model):
brand_name = models.CharField(max_length=255, index=True)
brand_location = models.CharField(max_length=255, index=True)
brand_date = models.DateTimeField(auto_now_add=True, null=False)
class Meta:
constraints = [
models.UniqueConstraint(fields=['brand_name', 'brand_location'], name='unique_brand')
]
Теперь у вас будет только уникальное имя бренда для каждого местоположения.
Вы можете прочитать больше об ограничениях здесь
Ответ №3:
Мне не хватает, чтобы добавить unique=True
к brand_name
этому .
brand_name = models.CharField(max_length=50, unique=True)