Django Как предотвратить дублирование экземпляров в базе данных

Я работаю с Django, и мне нужно убедиться, что в одной таблице нет одинаковых элементов. Я не совсем уверен, как можно убедиться, что вы не вводите одну и ту же информацию в таблицу дважды. Например, если я являюсь зарегистрированным пользователем, который должен ввести свое имя и адрес, как мне убедиться, что этому точно такому же пользователю с тем же именем и адресом не разрешено сохранять свою информацию дважды.

Обратите внимание, что пользователям предлагается ввести свою информацию в ModelForm.


person JohnnyCash    schedule 04.02.2012    source источник


Ответы (2)


Вы можете использовать уникальный вариант. Это будет реализовано примерно так:

class someModel(models.Model):
    name = models.CharField(max_length=100)
    address1 = models.CharField(max_length=100)
    class Meta:
        unique_together = ("name", "address1")
person Dean    schedule 04.02.2012
comment
как бы вы заставили его возвращать определенную фразу, если возникает ошибка определенного типа? - person JohnnyCash; 05.02.2012
comment
Это тоже был бы мой вопрос :D - person BoJack Horseman; 27.02.2014

чтобы изменить уникальное сообщение об ошибке вместе, вы можете сделать это: переопределить сообщение об ошибке unique_together?

class ArticleForm(ModelForm):
    class Meta:
        error_messages = {
            NON_FIELD_ERRORS: {
                'unique_together': "%(model_name)s's %(field_labels)s are not unique.",
            }
        }
person Leah    schedule 31.10.2016