2017-04-17 95 views
0

用戶可以註冊並登陸我的網站。那些當前登錄到我的網站的用戶可以創建自己的播放列表。但是,創建按鈕提交時,它返回我這個錯誤:失敗UNIQUE約束:music_playlist.owner_id

UNIQUE constraint failed: music_playlist.owner_id

這裏是我的models.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 

這是我的views.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