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