私はlanguage_tuples = models.ManyToManyField(LanguageTuple)
を私のUserProfile
に定義しました。このフィールドは、通常のユーザーが翻訳者になりたいときに入力する必要があります。だから彼は言語の必要な数だけ言語の組み合わせを選ぶことができるはずです。Django - ManyToManyFieldはフォームに表示されません
編集:Shang Wangのおかげで、複数のLanguageTuples
を選択できますが、フォーム内に新しいLanguageTuple
オブジェクトを作成することができません。
class Language(models.Model):
shortcut = models.CharField(max_length=40)
name = models.CharField(max_length=40)
def __str__(self):
return self.name
class LanguageTuple(models.Model):
language_from = models.ForeignKey(Language, related_name='language_from', null=True)
language_to = models.ForeignKey(Language, related_name='language_to', null=True)
def __str__(self):
return '{} to {}'.format(self.language_from, self.language_to)
それでは、複数のLanguage
既にデータベース内のオブジェクトが、LanguageTuple
のインスタンスがあると仮定しましょう。私はuser
が彼自身のタプルを(彼が望む数だけ)ビルドできるようにしたい。 CZ、EN、GE、SKなどの言語があれば、CZ-EN、EN-CZ、GE-CZ、SK-GEなどのタプルを作成できます。タプルを選択すると、データベース内にタプルが作成されます通常のようにLanguageTuple
インスタンスが存在しません。
問題は、フォームがレンダリングされるときにフォーム内にフィールドが存在しないことです。あなたはそれをどうすればいいのかわかりません。ご覧のとおり、フィールドにlanguage_tuples
というフィールドを追加しました。あなたがTranslatorRegistrationForm
ためforms.ModelForm
を必要と私はすでにコメントで言及した
class TranslatorRegistrationForm(forms.Form):
IBAN = forms.CharField(max_length=40,required=True)
first_name = forms.CharField(max_length=40,required=True)
last_name = forms.CharField(max_length=40,required=True)
class Meta:
model = UserProfile
fields = (
'first_name','last_name','IBAN','language_tuples'
)
私は 'TranslatorRegistrationForm'は' forms.Form'ではなく 'forms.ModelForm'でなければならないと思います。 –
ああ、ありがとう、それは助けた。しかし今、私は言語タプルから選択できますが、言語タプルから言語タプルになることはできません。何かヒントはありますか? –