1
これはおそらく意味がありませんが、この動作を適切に実装する方法をアドバイスする方がよいでしょう。
私はUser
モデルと2つのモデルを持っています(A
とB
)。 A
とB
の両方がForeignKey
〜User
です。 User
作成時に、私はまた、このユーザーのA
とB
を作成:A
とB
で2つのModelFormsを1つのCreateViewに作成
def save(self, *args, **kwargs):
user_id = self.id
super(User, self).save(*args, **kwargs)
if user_id is None:
as_A = A(user=self)
as_A.save()
as_B = B(user=self)
as_B.save()
唯一の必須フィールドがuser = models.OneToOneField(User)
で、他はオプションです。
class A(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
x = models.CharField(max_length=100, blank=True)
class B(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
y = models.CharField(max_length=100, blank=True)
私は登録のための2つのフォームを提供したい:Aとして、またはBとして登録フォームでA
として、顧客がUser
に関連A
モデルエンティティのフィールドを設定することができるはずです。 B.
のための同様のこれが私のRegistrationForm
次のとおりです。
class RegistrationForm(forms.ModelForm):
password = forms.CharField(
strip=False,
widget=forms.PasswordInput,
)
confirm_password = forms.CharField(
strip=False,
widget=forms.PasswordInput
)
class Meta:
model = User
fields = ['email', 'first_name', 'password']
def clean(self):
cleaned_data = super(RegistrationForm, self).clean()
password = cleaned_data.get("password")
confirm_password = cleaned_data.get("confirm_password")
if password != confirm_password:
raise forms.ValidationError("Passwords are not same")
return cleaned_data
あなたはそれが唯一のUser
のフィールドが含まれて見ることができるように。
追加のフォームとビューを適切に実装するにはどうすればよいですか?