2017-04-17 10 views
0

ユーザーは自分のWebサイトに登録してログインできます。現在自分のウェブサイトにログインしているユーザーは、自分のプレイリストを作成できます。UNIQUE制約に失敗しました:music_playlist.owner_id

:これは(エラーが発生した)私のviews.pyある

class Playlist(models.Model): 
    name = models.CharField(max_length=200, null=False, blank=False,default='') 
    owner = models.ForeignKey(User, unique=True,null=True) 

    def __str__(self): 
     return self.name 
    @property 
    def playlist_id(self): 
     return self.id 

:ここ

UNIQUE constraint failed: music_playlist.owner_id

は私のmodels.pyです:作成ボタンが提出されている場合でも、それは私に、このエラーが返さ
@login_required 
def create_playlist(request): 
    form = PlaylistForm(request.POST or None) 
    if form.is_valid(): 
     data = form.cleaned_data 

     playlist = form.save(commit=False) 
     playlist.owner = request.user 

     playlist.save() 
     #playlist_name = form.cleaned_data['name'] 
     context={ 
      'playlist':playlist, 

      'form':form, 
     } 

     return render(request, 'create_playlist.html', context) 
    context = { 
     "form": form, 
    } 
    return render(request, 'create_playlist.html', {'form': form,}) 

ユーザーがcreate_playlist.htmlに行くと、プレイリストの名前を入力して[作成]ボタンをクリックできます。プレイリストの所有者フィールドを現在ログインしているユーザーと同じにします。

ご協力いただきありがとうございます。あなたは、外部キーの所有者を一意にすると

答えて

1

あなたのコード

class Playlist(models.Model): 
    name = models.CharField(max_length=200, null=False, blank=False,default='') 
    owner = models.ForeignKey(User, null=True) 

    def __str__(self): 
     return self.name 
    @property 
    def playlist_id(self): 
     return self.id 

を修正してください、それは一人のユーザが、一つだけのプレイリストを持つことができることを意味します。あなたは、同じユーザーのための別のプレイリストを追加しようとすると、あなたは、あなたが一人のユーザが一つだけのプレイリストを持っているしたい場合は、このエラー

UNIQUE constraint failed: music_playlist.owner_id

を取得使用OneToOneField

関連する問題