Django: DB-Query внутри класса для "models.py" - PullRequest
0 голосов
/ 10 апреля 2020

Добрый день,

внутри моего "models.py" в Django Я хочу создать новый класс с именем "Coworker" с этими атрибутами

class Coworker(models.Model):

    roles = (
        ('Role A', 'Role A'),
        ('Role B', 'Role B'),
    )

    fullname = models.CharField(max_length=255, null=False)
    role = models.CharField(max_length=100, null=False, choices=roles)
    supervisor = models.CharField(...?)

Я также хочу создайте «супервизора», который должен заглянуть в этот класс и показать мне все «полное имя» с - скажем, «ролью» в качестве выбора. Поэтому, конечно, в начале это поле будет emtpy.

Возможно ли это? Функция "db_column" не работает. Или я что-то не так делаю?

Спасибо всем!

1 Ответ

0 голосов
/ 10 апреля 2020

Вам не хватает 2 баллов, поясню Лемм

  • Тот факт, что у вас есть модель Coworker, которая не является моделью Пользователь . Я имею в виду, что Coworker - это пользователь. Давайте закодируем эту идею
from django.contrib.auth import get_user_model

User = get_user_model()
class Coworker(models.Model):
    ..........
    user = models.OneToOneField(User...., on_delete=..)
    supervisor = models.OneToOneField(User...., on_delete=..)  # **

или лучше, если вам нужно несколько супервизоров, удалите строку в ** и создайте эту

class Supervisor(models.Model):
    coworker_supervised = models.ForiegnKey(Coworker, on_delete...,related_name='supervisors')

это подразумевает supervisor_instance.corworker_supervised и coworker.supervisors

или лучше, используйте m2m, если супервизор может контролировать нескольких пользователей, а у пользователя может быть несколько супервизоров.

  • DRY принцип, только не повторяйте себя, у пользователя есть first_name, last_name, если вы хотите full_name, определите метод для пользователя, который возвращает first_nam & last_name сцепленный.

см. этот вопрос.

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