在 Django 中给每个提交的表单一个不同的 I'd

问题描述 投票:0回答:1

我在尝试提交评论表时遇到了问题。下面是两个问题

  1. 当我尝试在没有
    pk=1
    的情况下发送表格时,它会在下面返回错误
MultipleObjectsReturned at /submit _review/7/ 
get() returned more than are Action Review--it returned 6!
  1. 当我尝试在
    pk=1
    时发送表格时,它有效并且审查表格被发送给管理员。 但是以下内容也不起作用

只改变id=1的review form

我的期望和需求

我想提交一个表格,它得到new id不像

pk=1
那样固定,但每次发送或提交每张表格都得到一个new id

#Action/views.py

def submit_review(request,game_id):
    url = request.META.get('HTTP_REFERER')
    if request.method == 'POST':
        try:
            reviews = ActionReview.objects.get(user__id=request.user.id, game_name__id=game_id, pk=1)
            form = Game_ReviewForm(request.POST, instance=reviews)
            form.save()
            messages.success(request, 'Thank you! , Your review has been Updated Successfully.')
            return redirect(url)
        except ActionReview.DoesNotExist:
            form =Game_ReviewForm(request.POST)
            if form.is_valid():
                data=ActionReview()
                data.subject = form.cleaned_data['subject']
                data.stars = form.cleaned_data['stars']
                data.content = form.cleaned_data['content']
                data.game_id=game_id
                data.user__id=request.user.id
                data.save()
                messages.success(request, 'Thank you! , Your review has been Added Successfully.')
                return redirect(url)

django django-views django-forms admin
1个回答
0
投票

.get
django 中的方法尝试返回 1 行,它不应该返回多个

如果您想获得多个结果,请使用

.filter

 reviews = ActionReview.objects.filter(user__id=request.user.id, game_name__id=game_id) # Returns everything matching this logic

在你的 try 块中

try:
    reviews = ActionReview.objects.filter(user__id=request.user.id, game_name__id=game_id)
    for instance in reviews:
        form = Game_ReviewForm(request.POST, instance=instance)  
        form.save()
    messages.success(request, 'Thank you! , Your review has been Updated Successfully.')
    return redirect(url)
© www.soinside.com 2019 - 2024. All rights reserved.