python - Python Django 信号“int”对象没有属性“保存”
问题描述
我在 Django 中创建羽毛球运动应用程序,您可以在其中创建比赛等。我现在要做的是通过信号从我的 models.py 更新matches_played。
这是我的信号.py:
class Player(models.Model):
...
matches_played = models.IntegerField(default=0, blank=True, null=True)
...
class Match(models.Model):
player_home = models.ForeignKey(Player, null=True, on_delete= models.SET_NULL, related_name='player_home')
player_away = models.ForeignKey(Player, null=True, on_delete= models.SET_NULL, related_name='player_away')
player_home_sets = models.IntegerField(default=0, blank=True, null=True)
player_away_sets = models.IntegerField(default=0, blank=True, null=True)
这是我的信号.py:
def add_match_count(sender, instance,**kwargs):
home_player_sets = instance.player_home_sets
away_player_sets = instance.player_away_sets
if home_player_sets > 0 or away_player_sets > 0:
instance.player_home.matches_played += 1
instance.player_away.matches_played += 1
instance.player_home.matches_played.save()
如果我编辑任何匹配项,我会收到错误:“int”对象没有属性“instance”。知道如何解决吗?
解决方案
该行:
instance.player_home.matches_played.save()
没有意义。.matches_played
属性是 an ,int
并且 anint
没有.save()
方法。您可能希望将其替换为:
def add_match_count(sender, instance,**kwargs):
home_player_sets = instance.player_home_sets
away_player_sets = instance.player_away_sets
if home_player_sets > 0 or away_player_sets > 0:
instance.player_home.matches_played += 1
instance.player_home.save()
instance.player_away.matches_played += 1
instance.player_away.save()
推荐阅读
- elasticsearch - 与上一个问题相关,我们如何格式化字符串转义值?
- decompiling - 你如何反编译dex文件?
- postgresql - 为什么 Postgres 只执行顺序扫描
- python - 在 Heroku 中部署烧瓶时为 PyGObject 构建轮子时出错
- json - 具有动态虚拟字段的 Django 代理模型
- sqlite - 具有空安全性的 Sqlite Flutter
- regex-group - 当第一个单词以 @ 开头时检测 2 个连续单词的正则表达式
- c - C中枚举类型的隐式类型转换
- bash - VSCode 远程容器开发 NULL 合并 devcontainer.json 中的环境变量
- javascript - 这个 Observablehq 示例中的“无效”是什么?