Я создал модель UserProfile, и я хочу подключить ее к модели User django. В моем случае я хочу одновременно обновлять информацию о пользователе и информацию о пользователе. Моя UserProfile модель:Django - Использование нескольких моделей и форм для одного и того же вида
class UserProfile(models.Model):
user = models.OneToOneField(User)
street = models.TextField(max_length=100, null=True)
Мои формы:
class UserForm(ModelForm):
class Meta:
model = User
fields = ['first_name', 'last_name', 'email']
widgets = {
'first_name': TextInput(attrs={'required': True, 'size': 28}),
'last_name': TextInput(attrs={'required': True, 'size': 28}),
'email': EmailInput(attrs={'required': True, 'size': 28}),
}
class UserProfileForm(ModelForm):
class Meta:
model = UserProfile
fields = ['street']
widgets = {
'street': TextInput(attrs={'required': False, 'placeholder': ' Street'}),
}
И мое мнение:
class UpdateUserAccountView(SuccessMessageMixin, UpdateView):
model = User
template_name = 'dashboard/update_user_account.html'
success_message = 'Profile successfully updated'
form_class = UserForm
success_url = '/dashboard/account'
def get_context_data(self, **kwargs):
context = super(UpdateUserAccountView, self).get_context_data(**kwargs)
context['title'] = 'Update Profile'
context['user'] = User.objects.all()
context['userprofile'] = UserProfile.objects.all()
return context
я могу обновить всю информацию, которая принадлежит пользователю, а не к UserProfile. Однако, если я изменю
model = User
к model = UserProfile
и form_class = UserForm
к form_class = UserProfileForm
я могу обновить улицу, но не First_name, last_name или по электронной почте. Поэтому мне нужна связь между этими моделями и формами. Я попытался это:
model = User, UserProfile
form_class = UserForm, UserProfileForm
, но затем я получаю эту ошибку:
'tuple' object has no attribute '_default_manager'
Пожалуйста, помогите!
Обратите внимание, что отдельный пользовательский файл больше не рекомендуется с 1,5, так как теперь вы можете определить пользовательский подкласс, который включает все ваши поля. –
Здравствуйте, спасибо вам за помощь. Я попробую. – user3083117