Python Django сигналы 'int' объект не имеет атрибута 'save' - PullRequest
1 голос
/ 18 марта 2020

Я создаю спортивное приложение для бадминтона в Django, где вы можете создавать спички и т. Д. c .. Сейчас я пытаюсь сделать это - обновлять match_played из моего models.py с помощью сигналов.

Вот мои сигналы.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» не имеет атрибута «экземпляр». Есть идеи как это исправить?

1 Ответ

1 голос
/ 18 марта 2020

Строка:

instance.player_home<b>.matches_played</b>.save()

не имеет смысла. Атрибут .matches_played является int, а int не имеет метода .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.<b>player_home.save()</b>
           instance.player_away.matches_played += 1
           instance.<b>player_away.save()</b>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...