1

私のアプリには、学生と教師の 2 種類のユーザーがいます。それらのそれぞれに関する追加情報を別のテーブルに保存したいと思います。

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) とともに挿入します。 Student テーブルに、Group.name を User_Groups に。

Meta Class を使用して StudentForm を作成し、UserCreationForm と同じフォームのテンプレートにレンダリングしましたが、UserCreationForm は Student モードに入るはずの user_id を作成するため、データベースへの保存を処理する方法がわかりません。ポインタはありますか?

4

1 に答える 1

2

同様の問題がありました。モデルの外観を少し変えることで解決しました:

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

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

このように、Django フォームを定義すると、このモデルに必要なすべてのフィールドがレンダリングされます。これは、前者の学生にユーザーがいるのとは対照的に、 The student is a userと言っているからです。

フォームは次のようになります。

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

編集:教師モデルにも同様のアプローチを使用してください。一部のフィールドのレンダリングを回避したい場合は、Meta クラスで fields 属性を使用します。

2 番目の編集: ユーザー フォームの検証とチェックを保持する場合は、フォームも UserCreationForm から継承する必要があります。

于 2013-09-26T15:56:43.343 に答える