首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django为特殊人群创建提取类

Django为特殊人群创建提取类
EN

Stack Overflow用户
提问于 2018-11-27 23:45:27
回答 1查看 24关注 0票数 0

我正在用Django创建一个注册表。您可以在学生、教师、家长或来宾之间进行选择。我想为每个类创建额外的字段。做这件事最好的方法是什么?此时将创建(示例)一个具有UserProfile (ForeignKey)的学生

我的models.py

代码语言:javascript
复制
class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, verbose_name="Benutzer")
    typeOfPerson = models.CharField(max_length=1, default=None, verbose_name="Typ", help_text="Entweder Schüler (S), Elternteil (E), Lehrer (L) oder Gast (G)")
    birth_date = models.DateField(default=None, verbose_name="Geburtsdatum")
    gender = models.CharField(max_length=1, default="M", verbose_name="Geschlecht")
    registration_date = models.DateField(auto_now=True, verbose_name="Registrationsdatum")
    ip_address = models.CharField(max_length=31, blank=True, null=True, verbose_name="IP-Adresse")

    is_verified = models.BooleanField(default=False, verbose_name="Ist verifiziert?", help_text="Ist der Benutzer verifiziert? (Wird z.B.: Bei manchen Umfragen gefragt.)")
    can_verify = models.BooleanField(default=False, verbose_name="Kann verifizieren?", help_text="Kann der Benutzer sich verifizieren? (Wenn ja, dann kann der Benutzer unter URL_ÜBER_STATIS_EINFÜGEN verifizieren.)")
    private = models.BooleanField(default=False, verbose_name="Privat", help_text="Ist dieses Benutzerprofil privat?")

    news = models.CharField(max_length=2047, blank=True, null=True)

    class Meta:
        ordering = ["user"]
        verbose_name = "Benutzerprofil"
        verbose_name_plural = "Benutzerprofile"

    def __str__(self):
        return "%s %s" % (self.user.first_name, self.user.last_name)


class Student(models.Model):
    UserProfile = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
    classNumber = models.CharField(max_length=2, blank=True, null=True, verbose_name="Klassenstufe")
    parents = models.CharField(max_length=63, blank=True, null=True, verbose_name="Eltern")

    def __str__(self):
        return str(self.UserProfile)


class Parent(models.Model):
    UserProfile = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
    children = models.CharField(max_length=511, blank=True, null=True, verbose_name="Kinder")

    def __str__(self):
        return str(self.UserProfile)


class Teacher(models.Model):
    UserProfile = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
    shortName = models.CharField(max_length=3, blank=True, null=True, verbose_name="Kürzel")

    def __str__(self):
        return str(self.UserProfile)


class Guest(models.Model):
    UserProfile = models.ForeignKey(UserProfile, on_delete=models.CASCADE)

    def __str__(self):
        return str(self.UserProfile)

如何找出用户是哪种类型的人(是学生、老师、家长还是客人)?

EN

回答 1

Stack Overflow用户

发布于 2018-11-28 00:58:28

你是不是想让它在用户选择“学生”时,创建一个用户配置文件和学生的实例?

如果是这样的话,您可以在models.py中使用信号来基本上检查用户选择的类型,并根据该类型创建每个模型实例。在用户配置文件模型中,类型可以只是一个字符串,比如'S‘代表学生,然后在表单中定义选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53503251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档