УНИКАЛЬНОЕ ограничение не удалось модели Django - PullRequest
0 голосов
/ 15 сентября 2018

Я работаю над веб-приложением Django.

Я пытаюсь создать пользователя из формы регистрации.

Я убедился, что в БД нет пользователя с таким именем, и ввел данные в форму регистрации, и нажал Enter.

Существует языковое поле по умолчанию, которое заполняется txt в пользовательской модели пользователя.

Я использую следующую функцию для заполнения этого поля.

def get_default_language():
    lang=Language.objects.get_or_create(
        name='Plain text',
        lang_code='text',
        slug='text',
        mime='text/plain',
        file_extension='.txt',
    )
    return lang[0].id

Но это дает мне ошибку ниже

IntegrityError at /signup/

UNIQUE constraint failed: djangobin_language.lang_code

Вот код для Язык Модель

class Language(models.Model):
    name=models.CharField(max_length=100)
    lang_code=models.CharField(max_length=100, unique=True, verbose_name="Language Code")

Разве не предполагается получить или создать строку в таблице Language? Почему я получаю эту ошибку?

1 Ответ

0 голосов
/ 15 сентября 2018

Ваша модель не завершена.Вы передаете различные значения для get_or_create и потому, что он не может найти точный объект, который вы ищете, чем он пытается создать его, но код языка уже используется, и вы получаете уникальную проблему.

Я предлагаю вам использовать опцию выбора в поле вашего языкового кода и передать кортеж с определениями состояния ISO.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...