python - Django 为特殊的人创建课外班
问题描述
我正在 Django 中创建一个注册表单。您可以在学生、教师、家长或访客之间进行选择。我想为每个班级创建额外的字段。最好的方法是什么?目前将创建(示例)具有 UserProfile(ForeignKey)的学生
我的模型.py
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)
我如何找出用户是什么类型的人(他/她是学生、老师、家长还是客人)?
解决方案
你是否试图让当用户选择让我们说“学生”时,它会创建一个用户配置文件实例和学生?
如果是这样,您可以在您的 models.py 中使用信号来检查用户选择的类型,并根据该类型创建每个模型实例。类型可以只是用户配置文件模型中的字符串,例如学生的“S”,然后只需在表单中定义选项。
推荐阅读
- php - 动态字段问题仅使用 jquery php 和 mysql 保存第一个结果
- android - 在 ViewPager 中反向滑动方向
- c# - 未处理的异常:System.IndexOutOfRangeException
- python - 为什么它返回一个完全空的值?
- google-sheets - 在谷歌表格的单个列中的每个单元格中显示今天的日期
- angular - mat-input 中的占位符位置
- symfony - Encore Vue.js 风格编译错误文件夹
- python - 使用列名创建一个空的数据框或列表,然后按列名添加数据
- firebase - 获取firebase实时数据库中的随机条目
- python - send_push_message() 缺少 4 个必需的位置参数:“token”、“title”、“message”和“extra”