Ошибка объекта Django должна иметь значение для поля "id", прежде чем можно будет использовать это отношение многие ко многим - PullRequest
0 голосов
/ 26 февраля 2019

Скажите, я правильно решил проблему?Вот мое решение в models.py

class UserRoleMeta(models.Model):
    TYPEMETA = (
        ...
        ('review', 'Отзывы'),
    )
    parents = models.ManyToManyField("self", blank=True, related_name="parents_list")
    type = models.CharField(max_length=10, choices=TYPEMETA, default='cat', verbose_name='Тип мета')
    rating = models.DecimalField(...)

    def save(self, commit=False, *args, **kwargs):
        super().save(*args, **kwargs)
        self.save_m2m(*args, **kwargs)

    def save_m2m(self, *args, **kwargs):
        if self.type == 'review':
            for parent in self.parents.all():
                rating = UserRoleMeta.objects.filter(parents=parent).aggregate(average=Avg('rating'))
                parent.rating = rating['average']
                parent.save()
        super().save(*args, **kwargs)

. Оно работает, но меня беспокоит правильность решения.Здесь нет ничего лишнего?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...