私はStudentと呼ばれるいくつかのフィールドを持つモデルと、ユーザーとのOneToOne関係(django.contrib.auth.User)を持っています。djangoモデルフォーム。関連するモデルのフィールドを含める
class Student(models.Model):
phone = models.CharField(max_length = 25)
birthdate = models.DateField(null=True)
gender = models.CharField(max_length=1,choices = GENDER_CHOICES)
city = models.CharField(max_length = 50)
personalInfo = models.TextField()
user = models.OneToOneField(User,unique=True)
その後、私はそのモデルのフィールドがクラスメタ属性で使用
class StudentForm (forms.ModelForm):
class Meta:
model = Student
のためのModelFormを持って、私はテンプレートで唯一のいくつかのフィールドを表示することができました。ただし、表示するユーザーフィールドを指定することはできますか?
何かのように:
fields =('personalInfo','user.username')
現在は何も表示されていません。ただし、StudentFieldsのみで動作します/
ありがとうございます。
を学生モデルが一つだけのModelFormを必要とするユーザー・モデルを継承している場合。 –
@KevinL。答えでこれを詳述するといいでしょう:-) – cel
@cel AFAIK、Djangoのコアでこれについて述べるような開発はありませんでした。ここの「自動」解決策は、自明なものではなく、独自のカスタムモデルフォームクラスまたはミックスインを作成することになります。これは、提案された方法を使用するよりもはるかに複雑です(そしておそらくは壊れやすくなります)。 1つの可能な解決策が、[この回答](https://stackoverflow.com/a/41559015/5747944)に含まれています。これは、2番目の「子」モデルを定義することができ、ジェネリックビューと互換性があると主張されているModelFormミックスインを記述します。 – sytech