2017-05-07 8 views
1

私が必要とするのは、usernamepasswordavatarの編集用プロファイルフォームです。しかし、これらのフィールドは2つになりますmodels.Userallusers(OneToOne)。両方のフィールドを組み合わせてプロファイルを編集するにはどうしたらいいですか?Djangoでプロフィールを編集

Models.py

class allusers(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    avatar = models.ImageField(upload_to='retest/static/images/') 

    def __str__(self): 
     return str(self.user) 
+0

一度に2つのモデルを更新することからフォームを正確に何を停止していますか? – e4c5

+0

forms.pyのformForm、ModelFormを使用します。問題が発生した場合は何かを試してコードを投稿してください。 – Exprator

答えて

3

カスタムフォームを使用し、ビューでそれを処理します。

ここに簡単な例があります。

forms.py

class UserEditForm(forms.Form): 
    username = forms.CharField() 
    password = forms.CharField(widget=forms.PasswordInput) 
    avatar = forms.FileField() 

views.py

def user_edit_view(request): 
    if request.method == "POST" and request.FILES['file']: 
     form = UserEditForm(request.POST, request.FILES) 
     if form.is_valid(): 
      your_file = request.FILES['file'] 
      new_username = form.cleaned_data.get('username') 
      new_password = form.cleaned_data.get('password') 
      user = User.objects.get(username=request.user.username) 
      all_user = allusers.objects.get(user=user) 
      user.username = new_username 
      user.set_password(new_password) 
      user.save() 
      alluser.avatar = your_file 
      alluser.save() 
      return render(.................) 
     return HttpResponse(......) 
関連する問題