Django Models. Пользователь - Маркс

Добрый день! Пытаюсь разобраться с моделями на примере учебного сайта на Django. Вопрос: Можно ли в модели сделать "фильтр", чтобы в T_Member приходили пользователи из таблицы Members с ролью "преподаватель"? Или это невозможно сделать на уровне модели? второй вопрос: правильно ли я определил поля? :) Спасибо

Существует класс "Пользователи"

    student = 'ST'
    parent = 'PA'
    teacher = 'TE'
    SCHOOL_CHOICES = [
        (student, 'Student'),
        (parent, 'Parent'),
        (teacher, 'Teacher'),
    ]
 
    user_id = models.AutoField(verbose_name='User ID', auto_created=True, primary_key=True)
    username = models.CharField(verbose_name='username', max_length=255, blank=True)
    dob = models.DateField(verbose_name='date of birthday', blank=False, default=date.today)
    role = models.CharField(max_length=2, choices=SCHOOL_CHOICES, default=student ) 

и класс Marks:

class Marks(models.Model):
    mark_id = models.AutoField(verbose_name='User ID', auto_created=True, primary_key=True)
    d_of_publ = models.DateField(verbose_name='Дата оценивания', blank=False, default=date.today)
    subject = models.ManyToManyField(Subject, verbose_name='Subjects') 
    T_Member = models.ManyToManyField(Members, verbose_name='Teachers')
    S_Member = models.ManyToManyField(Members, verbose_name='Students')
    mark = models.IntegerField(verbose_name='Marks', blank=False, default=2)

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

django signals from django doc

django сигналы простые лучше сложных

и с переопределением метода сохранения:

def save(self, *args, **kwargs):
    super().save(*args, **kwargs)
    if self._state.adding:
       # DO WHATEVER YOU WANT HERE
Вернуться на верх