2
我有一個問題,當用戶提交更改他們的個人資料,相關的用戶表中有空白值覆蓋所有字段(即當用戶表中的數據:用戶名,電子郵件,FIRST_NAME ...等)擴展Django的用戶配置文件過寫入提交
我的網站有完全不同的用戶配置文件的類型兩種類型的用戶,因爲這個原因,我不能使用用戶配置文件settings.py中設定,除非有人知道如何使工作?
在我的models.py(簡化,但向用戶展示模型繼承):
class UserProfile(User):
somevar = models.CharField(max_length=30)
objects = UserManager()
class ProfileForm(ModelForm):
class Meta:
model = UserProfile
class UserForm(ModelForm):
password2 = forms.CharField(widget=forms.PasswordInput())
remail = forms.CharField(max_length=75)
class Meta:
model = UserProfile
widgets = {'password': forms.PasswordInput()}
fields = ('email', 'password')
在我views.py:
@login_required
def profile_data(request):
"""
enter user profile data
"""
if request.method == 'POST': # submission/data change
user = UserProfile.objects.get(pk=request.user.id)
form = ProfileForm(request.POST, instance=user)
if form.is_valid():
form.save()
return render(request, 'users/profile_edit.html', {'form': form})
else: # no data entered = fill all users data in
form = ProfileForm(initial=model_to_dict(UserProfile.objects.get(id=request.user.id)))
return render(request, 'users/profile_edit.html', {'form': form})
的問題是,如果表單有效且表單保存時,它將通過使所有值爲空來影響該用戶的用戶表,因爲這些屬性在表單模型中不包含任何數據。我試過排除ProfileForm中的所有用戶表字段,但似乎應該有一個更簡單的方法。
任何幫助?
感謝您的答覆@Rohan最近的問題。在UserProfile繼承User模型而不是做一對一參考時,這是不可能的?在我看來,如果不繼承,網站功能將會丟失。 – devinjames
@DevinS,多重繼承與onetoone關係相同。 – Rohan
我做了一些閱讀和理解,我在考慮ForeignKey,因爲我沒有理由使用OneToOneField。謝謝! – devinjames