Python django中的Like按钮在django中工作不正常
我已经添加了喜欢和不喜欢按钮的歌曲后,当喜欢的对象没有被创建,如果一些点击喜欢它是显示初始错误,如果喜欢的对象已经存在,那么它不会渲染到模板 models.py models.py中的代码Python django中的Like按钮在django中工作不正常,python,django,django-models,django-templates,django-views,Python,Django,Django Models,Django Templates,Django Views,我已经添加了喜欢和不喜欢按钮的歌曲后,当喜欢的对象没有被创建,如果一些点击喜欢它是显示初始错误,如果喜欢的对象已经存在,那么它不会渲染到模板 models.py models.py中的代码 class Song(models.Model): song_title = models.CharField(max_length=25) album = models.ForeignKey(Album, related_name='album_name', on_delete=models
class Song(models.Model):
song_title = models.CharField(max_length=25)
album = models.ForeignKey(Album, related_name='album_name', on_delete=models.CASCADE, blank=True)
singer = models.ManyToManyField(Singer, blank=True)
language = models.CharField(max_length=25)
class VoteManager(models.Manager):
def get_vote_or_unsaved_blank_vote(self,song,user):
try:
return Vote.objects.get(song=song,user=user)
except ObjectDoesNotExist:
return Vote(song=song,user=user)
class Vote(models.Model):
UP = 1
DOWN = -1
VALUE_CHOICE = ((UP, "song
and user
fields are required. So you have to give song
and user
while creating Vote
.
here is full code::
class SongVoteCreateView(View):
form_class = SongVoteForm
context = {}
def post(self,request,pk=None,song_id=None):
song_obj = Song.objects.get(pk=song_id)
vote_obj,created = Vote.objects.get_or_create(song = song_obj, user = request.user)
vote_form = SongVoteForm(request.POST, instance=vote_obj)
if vote_form.is_valid():
vote_form.save()
return redirect('/album/')
class歌曲(models.Model):
歌曲标题=models.CharField(最大长度=25)
album=models.ForeignKey(album,related_name='album_name',on_delete=models.CASCADE,blank=True)
singer=models.ManyToManyField(singer,blank=True)
语言=models.CharField(最大长度=25)
类VoteManager(models.Manager):
def get_vote_或未保存_blank_vote(自我、歌曲、用户):
尝试:
返回Vote.objects.get(歌曲=歌曲,用户=用户)
除ObjectDoesNotExist外:
返回投票(歌曲=歌曲,用户=用户)
集体投票(models.Model):
UP=1
向下=-1
VALUE_CHOICE=((向上,歌曲
和用户
字段是必需的。因此,在创建投票
时,您必须给出歌曲
和用户
这是完整的代码::
class SongVoteCreateView(视图):
form_class=SongVoteForm
上下文={}
def post(自我、请求、主键=无、歌曲id=无):
song\u obj=song.objects.get(pk=song\u id)
投票对象,created=vote.objects.get\u或创建(song=song\u obj,user=request.user)
投票形式=SongVoteForm(request.POST,实例=投票对象)
如果投票形式有效():
投票表格保存()
返回重定向(“/album/”)
同样在VoteManager
中
返回投票(歌曲=歌曲,用户=用户)
不会创建投票,而是必须使用
return Vote.objects.create(song=song,user=user)
song
和user
字段是必需的。因此,在创建Vote
时,必须给出song
和user
这是完整的代码::
class SongVoteCreateView(视图):
form_class=SongVoteForm
上下文={}
def post(自我、请求、主键=无、歌曲id=无):
song\u obj=song.objects.get(pk=song\u id)
投票对象,created=vote.objects.get\u或创建(song=song\u obj,user=request.user)
投票形式=SongVoteForm(request.POST,实例=投票对象)
如果投票形式有效():
投票表格保存()
返回重定向(“/album/”)
同样在VoteManager
中
返回投票(歌曲=歌曲,用户=用户)
不会创建投票,而是必须使用
return Vote.objects.create(歌曲=歌曲,用户=用户)
更改代码后,完整性错误指向其他地方。我将分享此注释结尾处的代码追溯。请告诉我什么是完整性错误,因为我是django的新手,我不太了解。回溯:我认为您在投票
模型中为类似的字段指定了空值,而不是-1或1将完整性错误指向其他地方。我将分享该注释结尾处的代码跟踪。请告诉我什么是完整性错误,因为我是django的新手,我知道的不多。回溯:我认为您在投票
模型中为like
字段指定了空值,而不是-1或1