私はdjang-registrationフォームをロードしています。これは、2つの関連するオブジェクト、GeneralUser、およびそのビジネスを作成するためにサブクラス化しています。以下のコードは、警告で失敗します:Django:コミットする前にアソシエートするオブジェクト
save()保存されていない関連オブジェクト '所有者'によるデータの損失を防止することは禁止されています。
そして、私はそうのようなビジネスを作成しようとすると「NoneType」オブジェクトは、「「is_active」は属性を持っていない「NoneTypeのオブジェクトが属性の所有者はいない」の静脈に警告をも持っている:business = Business(name=self.cleaned_data['business_name'], owner=user)
I私は同時にそれをやっていない限り、ユーザまたはビジネスのどちらにもdbにコミットしない方法を探しています。form.isvalid()
のようなものをチェックするためのこのフォームのビューがあります。django登録はすべてのそれらの意見を世話している。
class GeneralUserForm(UserCreationForm):
business_name = forms.CharField(required=True)
class Meta:
model = GeneralUser
fields = ['username', 'email', 'password1',
'password2', 'business_name']
def save(self, commit=True):
user = super(GeneralUserForm, self).save(commit=False)
user.set_password(self.cleaned_data["password1"])
business = Business.objects.create(name=self.cleaned_data['business_name'], owner=user)
if commit:
user.is_active = True # TODO: remove before deployment.
user.save()
business.save()
return user
GeneralUser
をBusiness
に関連付けて、DBにコミットする方法を教えてください。
チェックを行うことができます。 – pramod
@pramodしかし、DBに作成されるまで、ユーザは属性idを持っていませんか? – zerohedge