Скажите, я правильно решил проблему?Вот мое решение в 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)
. Оно работает, но меня беспокоит правильность решения.Здесь нет ничего лишнего?