Nomad
Nomad15 вересня 2020 р. 10:21

Django модель с полем choicefiled - проблемка в админке

django, admin, choicefield

всем привет
столкнулся с проблемкой.
есть некая модель пользователя, в которой есть поле:

is_traider = models.IntegerField(default=0, blank=True, null=True, choices=TRAIDER_STATUS)

где

TRAIDER_STATUS = ( ('0', 'User'), ('1', 'Company'), ('2', 'Self employed'), )

пользователя можно создать двумя способами: либо из фронта приложения (Регистрация) либо тупо зайти в админку django и создать пользователя
по умолчанию при создании пользователя по логике вещей, поле is_traider = 0

я создаю пользователя из админки джанго, после ввода емэйла и пароля попадаю на страницу деталей:

и как только выбираю значения для поля is_traider выскакивает ошибка:

может кто подсказать в чем проблема??

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

3
Nomad
  • 15 вересня 2020 р. 10:51

всем привет еше раз
я решил вопрос
если для кого будет интересно то вот в чем заключалась проблема:

поле is_traider в моей модели типа IntegerField
а мой choices возврашал String, потому что у меня TRAIDER_STATUS = ( ('0', 'User'), ('1', 'Company'), ('2', 'Self employed'), )
я просто поменял в модели вот так: TRAIDER_STATUS = ( (0, 'User'), (1, 'Company'), (2, 'Self employed'), )

и все заработало ))))

    Илья Чичак
    • 15 вересня 2020 р. 15:34
    • (відредаговано)

    Я позволю себе предложить вам разделить это поле на два:

    is_traider = models.BooleanField()
    traider_type = models.IntegerField(...)
    

    или просто

    user_status
    если оно собирает в себе варианты, что он не только продает, а покупает. Просто само название подразумевает ДА или НЕТ

    Ну и стоит запихать варианты в константы:

    class User(AbstractUser):
        STATUS_USER = 0
        STATUS_COMPANY = 1
        STATUS_SELF_EMPLOYED = 2
    
        TRAIDER_TYPES = (
            (STATUS_USER, 'User'),
            (STATUS_COMPANY, 'Company'),
            (STATUS_SELF_EMPLOYED, 'Self-employed')
        )
    
        user_status = models.IntegerField(default=STATUS_USER, choices=TRAIDER_TYPES) 
    

    потом сильно облегчит жизнь:

    User.objects.filter(user_type=User.STATUS_USER)
    ...
    if user.user_status == User.STATUS_COMPANY:
    ...
    
      Nomad
      • 16 вересня 2020 р. 05:54
      • Відповідь була позначена як рішення.

      спасибо за ваш комент
      про константы ... даже не подумал ... very good idea

        Коментарі

        Only authorized users can post comments.
        Please, Log in or Sign up
        ВЮ

        C++ - Тест 004. Указатели, Массивы и Циклы

        • Результат:30бали,
        • Рейтинг балів-10
        a

        C++ - Тест 006. Перечисления

        • Результат:30бали,
        • Рейтинг балів-10
        a

        C++ - Тест 005. Структуры и Классы

        • Результат:91бали,
        • Рейтинг балів8
        Останні коментарі
        k
        kmssr09 лютого 2024 р. 05:43
        Qt Linux - Урок 001. Автозапуск програми Qt під Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
        АК
        Анатолий Кононенко05 лютого 2024 р. 12:50
        Qt WinAPI - Урок 007. Робота з ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
        EVA
        EVA25 грудня 2023 р. 21:30
        Boost - статичне зв&#39;язування в проекті CMake під Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
        J
        JonnyJo25 грудня 2023 р. 19:38
        Boost - статичне зв&#39;язування в проекті CMake під Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
        G
        Gvozdik19 грудня 2023 р. 08:01
        Qt/C++ - Урок 056. Підключення бібліотеки Boost в Qt для компіляторів MinGW і MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
        Тепер обговоріть на форумі
        G
        George1307 травня 2024 р. 10:27
        добавить qlineseries в функции в функции: "GPlotter::addSeries(QString title, QVector &arr)" я вызываю метод setChart(...), я в конструктор передал адрес на QChartView элемент
        BlinCT
        BlinCT05 травня 2024 р. 15:46
        Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
        Evgenii Legotckoi
        Evgenii Legotckoi03 травня 2024 р. 00:07
        Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.
        IscanderChe
        IscanderChe30 квітня 2024 р. 14:22
        Во Flask рендер шаблона не передаётся в браузер Доброе утро! Имеется вот такой шаблон: <!doctype html><html> <head> <title>{{ title }}</title> <link rel="stylesheet" href="{{ url_…
        G
        Gar22 квітня 2024 р. 15:46
        Clipboard Как скопировать окно целиком в clipb?

        Слідкуйте за нами в соціальних мережах