首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在参加比赛中得到了重复的回答。我只希望每一场比赛都有一个回应。

我在参加比赛中得到了重复的回答。我只希望每一场比赛都有一个回应。
EN

Stack Overflow用户
提问于 2022-05-26 11:24:12
回答 1查看 17关注 0票数 0

我在this.Please上非常努力,帮助我解决问题,因为这是非常重要的。我找不到为什么会发生这种事。

models.py

代码语言:javascript
复制
class JoinContestlist(models.Model):
    user = models.ForeignKey(User,null=True,on_delete=models.CASCADE)
    contest_no = models.CharField(max_length=100,null=True, blank=True)
    match_id = models.CharField(max_length=100,null=True, blank=True)
    spots = models.IntegerField(null=True, blank=True)
    entry_fee = models.IntegerField(null=True, blank=True)
    price_pool = models.IntegerField(null=True, blank=True)
    level = models.JSONField(null=True, blank=True)
    no_of_team = models.IntegerField(null=True, blank=True)
    remaining_spots = models.IntegerField(null=True, blank=True)
    remaining_team = models.IntegerField(null=True, blank=True)

views.py POST Function

代码语言:javascript
复制
@api_view(['POST'])
def post_join_contest_list(request, id, contest_no, match_id):
    try:
        if request.method == 'POST':
            user = User.objects.get(id=id)
            qs = Contest.objects.get(contest_no=contest_no)
            cs = MatchList.objects.get(match_id=match_id)
            serializer = JoinContestlistserializer(qs, data=request.data)
            ks = JoinContestlist.objects.filter(user=user, contest_no=qs.contest_no, match_id=match_id)
            if len(ks) < qs.no_of_team:
                js = JoinContestlist.objects.create(user=user, spots=qs.spots, entry_fee=qs.entry_fee,
                                                    price_pool=qs.price_pool, level=qs.level, no_of_team=qs.no_of_team,
                                                    contest_no=qs.contest_no, match_id=cs.match_id)
                js.save()
                return JsonResponse({"status": True, "message": "success"})
            return JsonResponse({"status": False, "message": "Contest is full"})
    except:
        return JsonResponse({"status": False, "message": "Service temporarily unavailable, try again later"})

GET函数

代码语言:javascript
复制
@api_view(['GET'])
def get_join_contest_list(request, id, match_id):
    try:
        if request.method == 'GET':
            # import pdb
            # pdb.set_trace()
            user = User.objects.get(id=id)
            cs = JoinContestlist.objects.filter(user=user, match_id=match_id)
            json_data_2 = []
            json_data_4 = []
            json_data_1 = []
            for k in cs:
                qs = JoinContestlist.objects.filter(match_id=k.match_id, contest_no=k.contest_no)
                ds = JoinContestlist.objects.filter(user=user, match_id=k.match_id, contest_no=k.contest_no)
                a = len(qs)

                b = len(ds)
                remaining_spots = k.spots - a
                remaining_team = k.no_of_team - b

                json_data_1.append({
                    "contest_no": k.contest_no,
                    "spots": k.spots,
                    "remaining_spots": remaining_spots,
                    "entry_fee": k.entry_fee,
                    "prize_pool": k.price_pool,
                    "no_of_team": k.no_of_team,
                    "remaining_team": remaining_team,
                    "winning": [{"key": q, "value": z} for (q, z) in k.level.items()]
                })
                

            return JsonResponse(
                {"status": True, "message": "success", "joined_contest": json_data_1, })
    except:
        return JsonResponse({"status": False, "message": "Service temporarily unavailable, try again later"})

输出--我正在得到

代码语言:javascript
复制
{
    "status": true,
    "message": "success",
    "joined_contest": [
        {
            "contest_no": "13",
            "spots": 1118,
            "remaining_spots": 1113,
            "entry_fee": 99,
            "prize_pool": 90759,
            "no_of_team": 10,
            "remaining_team": 5,
            "winning": [
                {
                    "key": "1",
                    "value": " 5,000 "
                },
                {
                    "key": "2",
                    "value": " 2,000"
                },
                {
                    "key": "3-10",
                    "value": "750"
                },
                {
                    "key": "11-100",
                    "value": "500"
                },
                {
                    "key": "101-250",
                    "value": "140"
                },
                {
                    "key": "251-372",
                    "value": "95"
                }
            ]
        },
        {
            "contest_no": "13",
            "spots": 1118,
            "remaining_spots": 1113,
            "entry_fee": 99,
            "prize_pool": 90759,
            "no_of_team": 10,
            "remaining_team": 5,
            "winning": [
                {
                    "key": "1",
                    "value": " 5,000 "
                },
                {
                    "key": "2",
                    "value": " 2,000"
                },
                {
                    "key": "3-10",
                    "value": "750"
                },
                {
                    "key": "11-100",
                    "value": "500"
                },
                {
                    "key": "101-250",
                    "value": "140"
                },
                {
                    "key": "251-372",
                    "value": "95"
                }
            ]
        },
        {
            "contest_no": "13",
            "spots": 1118,
            "remaining_spots": 1113,
            "entry_fee": 99,
            "prize_pool": 90759,
            "no_of_team": 10,
            "remaining_team": 5,
            "winning": [
                {
                    "key": "1",
                    "value": " 5,000 "
                },
                {
                    "key": "2",
                    "value": " 2,000"
                },
                {
                    "key": "3-10",
                    "value": "750"
                },
                {
                    "key": "11-100",
                    "value": "500"
                },
                {
                    "key": "101-250",
                    "value": "140"
                },
                {
                    "key": "251-372",
                    "value": "95"
                }
            ]
        },
        {
            "contest_no": "13",
            "spots": 1118,
            "remaining_spots": 1113,
            "entry_fee": 99,
            "prize_pool": 90759,
            "no_of_team": 10,
            "remaining_team": 5,
            "winning": [
                {
                    "key": "1",
                    "value": " 5,000 "
                },
                {
                    "key": "2",
                    "value": " 2,000"
                },
                {
                    "key": "3-10",
                    "value": "750"
                },
                {
                    "key": "11-100",
                    "value": "500"
                },
                {
                    "key": "101-250",
                    "value": "140"
                },
                {
                    "key": "251-372",
                    "value": "95"
                }
            ]
        },
        {
            "contest_no": "13",
            "spots": 1118,
            "remaining_spots": 1113,
            "entry_fee": 99,
            "prize_pool": 90759,
            "no_of_team": 10,
            "remaining_team": 5,
            "winning": [
                {
                    "key": "1",
                    "value": " 5,000 "
                },
                {
                    "key": "2",
                    "value": " 2,000"
                },
                {
                    "key": "3-10",
                    "value": "750"
                },
                {
                    "key": "11-100",
                    "value": "500"
                },
                {
                    "key": "101-250",
                    "value": "140"
                },
                {
                    "key": "251-372",
                    "value": "95"
                }
            ]
        },
        {
            "contest_no": "12",
            "spots": 50,
            "remaining_spots": 45,
            "entry_fee": 49,
            "prize_pool": 1975,
            "no_of_team": 5,
            "remaining_team": 0,
            "winning": [
                {
                    "key": "1-5",
                    "value": "125"
                },
                {
                    "key": "6-15",
                    "value": "75"
                },
                {
                    "key": "16-30",
                    "value": "40"
                }
            ]
        },
        {
            "contest_no": "12",
            "spots": 50,
            "remaining_spots": 45,
            "entry_fee": 49,
            "prize_pool": 1975,
            "no_of_team": 5,
            "remaining_team": 0,
            "winning": [
                {
                    "key": "1-5",
                    "value": "125"
                },
                {
                    "key": "6-15",
                    "value": "75"
                },
                {
                    "key": "16-30",
                    "value": "40"
                }
            ]
        },
        {
            "contest_no": "12",
            "spots": 50,
            "remaining_spots": 45,
            "entry_fee": 49,
            "prize_pool": 1975,
            "no_of_team": 5,
            "remaining_team": 0,
            "winning": [
                {
                    "key": "1-5",
                    "value": "125"
                },
                {
                    "key": "6-15",
                    "value": "75"
                },
                {
                    "key": "16-30",
                    "value": "40"
                }
            ]
        },
        {
            "contest_no": "12",
            "spots": 50,
            "remaining_spots": 45,
            "entry_fee": 49,
            "prize_pool": 1975,
            "no_of_team": 5,
            "remaining_team": 0,
            "winning": [
                {
                    "key": "1-5",
                    "value": "125"
                },
                {
                    "key": "6-15",
                    "value": "75"
                },
                {
                    "key": "16-30",
                    "value": "40"
                }
            ]
        },
        {
            "contest_no": "12",
            "spots": 50,
            "remaining_spots": 45,
            "entry_fee": 49,
            "prize_pool": 1975,
            "no_of_team": 5,
            "remaining_team": 0,
            "winning": [
                {
                    "key": "1-5",
                    "value": "125"
                },
                {
                    "key": "6-15",
                    "value": "75"
                },
                {
                    "key": "16-30",
                    "value": "40"
                }
            ]
        }
    ]
}

我在参加比赛中得到了重复的回答。我只希望每个contest.Below只有一个响应是我的预期输出

预期输出

代码语言:javascript
复制
{
    "status": true,
    "message": "success",
    "joined_contest": [
        {
            "contest_no": "13",
            "spots": 1118,
            "remaining_spots": 1113,
            "entry_fee": 99,
            "prize_pool": 90759,
            "no_of_team": 10,
            "remaining_team": 5,
            "winning": [
                {
                    "key": "1",
                    "value": " 5,000 "
                },
                {
                    "key": "2",
                    "value": " 2,000"
                },
                {
                    "key": "3-10",
                    "value": "750"
                },
                {
                    "key": "11-100",
                    "value": "500"
                },
                {
                    "key": "101-250",
                    "value": "140"
                },
                {
                    "key": "251-372",
                    "value": "95"
                }
            ]
        },
        {
            "contest_no": "12",
            "spots": 50,
            "remaining_spots": 45,
            "entry_fee": 49,
            "prize_pool": 1975,
            "no_of_team": 5,
            "remaining_team": 0,
            "winning": [
                {
                    "key": "1-5",
                    "value": "125"
                },
                {
                    "key": "6-15",
                    "value": "75"
                },
                {
                    "key": "16-30",
                    "value": "40"
                }
            ]
        }
    ]
}
EN

回答 1

Stack Overflow用户

发布于 2022-05-26 11:50:49

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72391034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档