繁体   English   中英

Django表单和注册:将数据插入其他表

[英]Django forms and registration: insert data to other tables

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

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

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

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

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

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

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属性。

第二次编辑:如果要保留对User表单的验证和检查,该表单也应继承自UserCreationForm。

暂无
暂无

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

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