Python Django无法更新模型
我有以下函数来覆盖模型匹配中的默认保存函数Python Django无法更新模型,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我有以下函数来覆盖模型匹配中的默认保存函数 def save(self, *args, **kwargs): if self.Match_Status == "F": Team.objects.filter(pk=self.Team_one.id).update(Played=F('Played')+1) Team.objects.filter(pk=self.Team_two.id).update(Played=F('Played')+1)
def save(self, *args, **kwargs):
if self.Match_Status == "F":
Team.objects.filter(pk=self.Team_one.id).update(Played=F('Played')+1)
Team.objects.filter(pk=self.Team_two.id).update(Played=F('Played')+1)
if self.Winner !="":
Team.objects.filter(pk=self.Winner.id).update(Win=F('Win')+1, Points=F('Points')+3)
else:
return
if self.Match_Status == "D":
Team.objects.filter(pk=self.Team_one.id).update(Played=F('Played')+1, Draw = F('Draw')+1, Points=F('Points')+1)
Team.objects.filter(pk=self.Team_two.id).update(Played=F('Played')+1, Draw = F('Draw')+1, Points=F('Points')+1)
super(Match, self).save(*args, **kwargs)
我可以很好地保存比赛模型,但团队模型似乎根本没有更新,也没有抛出错误。我是不是错过了什么 你的方法没有明显的问题。所以通常的调试技巧适用:您确定该方法实际上正在被调用吗?您确定Match对象的Match_状态为F或D吗?放入一些打印语句以确保正确。将其添加到ur admin.py中
def save_model(self, request ,obj ,form,change):
if obj.Match_Status == "F":
Team.objects.filter(pk=obj.Team_one.id).update(Played=F('Played')+1)
Team.objects.filter(pk=obj.Team_two.id).update(Played=F('Played')+1)
if obj.Winner !="":
Team.objects.filter(pk=obj.Winner.id).update(Win=F('Win')+1, Points=F('Points')+3)
else:
return
if obj.Match_Status == "D":
Team.objects.filter(pk=obj.Team_one.id).update(Played=F('Played')+1, Draw = F('Draw')+1, Points=F('Points')+1)
Team.objects.filter(pk=obj.Team_two.id).update(Played=F('Played')+1, Draw = F('Draw')+1, Points=F('Points')+1)
obj.save()
正如Daniel所说,没有什么会突然出错,但我们确实对您的代码整体一无所知。最好能提供一个完整的简化示例。请看:(乔恩在C#的上下文中写道,但它适用于任何语言。)