2016-12-18 3 views
0
私は、次のエラーを取得しています

:私は、モデルからrequest.userと外部キーを割り当てることが、私は取得エラージャンゴ

models.py

に、現在のユーザーのIDを割り当てるしようとしている UNIQUE constraint failed: user_profile_credit.customer_id

class Credit(models.Model): 
    WALLET=(
     ('1','first choice'), 
     ('2','second choice') 
    ) 
    customer=models.OneToOneField(User) 
    wallet=models.CharField(max_length=2, choices= WALLET) 

と私のform.py

class CreditForm(forms.ModelForm): 
    class Meta: 
     model=Credit 
     fields=['wallet'] 
     widgets = { 
      'wallet': forms.RadioSelect(), 
     } 

finaly私のviews.py:

def CreditView(request): 
    if request.method == "POST": 
     form = CreditForm(request.POST) 
     if form.is_valid(): 
      post = form.save(commit=False) 
      post.customer=request.user #:((
      post.save() 
     return redirect('user_profile:index') 
    else: 
     form = CreditForm() 
     return render(request, 'user_profile/credit.html', {'form': form}) 

私も変更します。

post.customer=request.user 

へ:

post.customer=User.objects.filter(id= request.user.id)[0] 

currentuser=request.user 
post.customer=currentuser.id 

しかし、私は取得エラー Cannot assign "5": "Credit.customer" must be a "User" instance.

答えて

0

用途:

form = CreditForm(request.POST, instance=request.user.credit) 

(これは既にこのユーザーの信用インスタンスを作成した前提としています。 OneToOneFields hereについてもっと読む)。

+0

ありがとうございますが、別のエラーが表示されます: 'ユーザーにはクレジットがありません' – meehraaad

+0

ユーザーを作成するたびに、そのユーザーのクレジットインスタンスを作成してください! 'Credit.objects.create(user = u、wallet = '1')' – Udi

関連する問題