Аргумент int() должен быть строкой, байтоподобным объектом или числом, а не 'dict'
Функция не входит в условие if, потому что round - dict, а match_round - int, поэтому выдает ошибку, как это решить?
my modelviewset
def destroy(self, request, *args, **kwargs):
gameevent = self.get_object().gameevent
match_round = self.get_object().match_round
print(gameevent)
print(match_round)
round = Matchscore.objects.filter(gameevent=gameevent, match_round=match_round).values_list("match_round",flat=True).aggregate(Max("match_round"))
print(round)
if round == match_round:
Matchscore.objects.get(match_round=round).delete()
response = {"result": "successfully removed"}
else:
response = {"result": "can't delete this round"}
return Response(response)
попробуйте это,
def destroy(self, request, *args, **kwargs):
gameevent = self.get_object().gameevent
match_round = self.get_object().match_round
print(gameevent)
print(match_round)
round = Matchscore.objects.filter(gameevent=gameevent, match_round=match_round).values_list("match_round",flat=True).aggregate(Max("match_round"))['match_round__max']
print(round)
if round == match_round:
Matchscore.objects.get(match_round=round).delete()
response = {"result": "successfully removed"}
else:
response = {"result": "can't delete this round"}
return Response(response)
Если вы хотите сравнить объекты Django DB на идентичность в БД, т.е. разделяющие одну и ту же строку БД, то проверьте их pk на равенство.
if a_round.pk == match_round.pk:
если по какой-то другой метрике, основанной на других полях, закодируйте это явно.
В вопросе round - это вообще не объект Django DB, это values_list, основанный на некоторых отфильтрованных объектах. Поэтому вам нужно извлечь некоторые значения из результата этого запроса, и соответствующие значения из match_round, и сравнить их. У меня нет достаточного понимания проблемы, чтобы предположить природу этого сравнения.