1

在我的应用程序中,我有两种类型的用户:学生和教师。我想将关于它们中的每一个的附加信息存储在单独的表中。

class Student(models.Model):
    user = models.ForeignKey(User)
    nr_indeksu = models.BigIntegerField()

    def __unicode__(self):
        return unicode(self.user)

假设我想将用户注册为学生 - 在这种情况下,我需要展开用户注册表单,因此它将包含组和学生模型中的字段,并且在注册期间我想插入 Student.nr_indeksu 和 Student.user_id(FK)进入学生表,Group.name 进入 User_Groups。

我已经使用 Meta Class 创建了 StudentForm 并以与 UserCreationForm 相同的形式在模板中呈现它,但我不知道如何处理保存到数据库中,因为 UserCreationForm 创建了它应该进入学生模式的 user_id。任何指针?

4

1 回答 1

2

我有一个类似的问题。通过使模型看起来有点不同来解决它:

class Student(User):
nr_indeksu = models.BigIntegerField()

def __unicode__(self):
    return unicode(self.user)

这样,当您定义 Django 表单时,将为该模型呈现所有需要的字段。这是因为您说学生是用户,而学生拥有用户而不是前者

表格可能如下所示:

class StudentForm(forms.ModelForm):
    class Meta:
        model = Student

编辑:对教师模型使用类似的方法。如果要避免渲染某些字段,请使用 Meta 类中的 fields 属性。

第二次编辑:如果你想保留用户表单的验证和检查,表单也应该从 UserCreationForm 继承。

于 2013-09-26T15:56:43.343 回答