Добрый день. Начал изучать django, столкнулся с вопросом, который не могу решить второй день.
Есть две модели:
Проект:
class Project(models.Model):
id = models.AutoField(primary_key=True)
num_queries = models.IntegerField(_('num_queries'), default=0)
И запрос:
class Query(models.Model):
id = models.AutoField(primary_key=True)
text = models.CharField(_('text'), max_length=256)
project_id = models.ForeignKey(Project, related_name='projects', on_delete=models.CASCADE)
В поле num_queries у Project лежит количество запросов, относящихся к проекту.
Задача простая: при создании нового объекта Query (т.е. при добавлении нового запроса в базу) нужно увеличить поле num_queries у связанного проекта на 1.
Пробовал обновлять следующим способом:
@receiver(post_save, sender=Query)
def count_queries(sender, instance, **kwargs):
project = Project.objects.get(id=instance.product_id())
project.num_queries += 1
project.save()
Но при сохранении я получаю TypeError. Выяснил, что всему виной интсрукция id=instance.product_id().
Скорее всего я неправильно пытаюсь обратиться к полю созданного объекта. Подскажите, как это правильно реализовать.