Когда я нажму на кнопку сохранить, он проверит эти данные в базе данных, прежде чем сохранять их в Django?

#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)