繁体   English   中英

Django 型号。 用户 - 标记

[英]Django Models. User - Marks

下午好。 我试图找出 Django 培训站点示例中的模型: 问题? 是否可以在 model 中做一个“过滤器”,以便成员表中具有“老师”角色的用户来到 T_Member? 或者在 model 级别不可能做到这一点:第二个问题? 我是否正确定义了这些字段:) 感谢

有一个 class “用户”

    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 ) 

和 class 标记:

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)

那么您实际上可以做的是覆盖用户 model 的保存方法,每当创建新用户时,您只需做任何您想做的事情。 我个人不推荐信号,但这也是您的另一种选择。

来自 django 文档的 django 信号

django 信号简单胜于复杂

并使用覆盖保存方法:

def save(self, *args, **kwargs):
    super().save(*args, **kwargs)
    if self._state.adding:
       # DO WHATEVER YOU WANT HERE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM