У меня рекурсивные отношения M2M с классом индикатора.Индикатор представляет собой целое число или вычисленное значение из 2 индикаторов:
class Indicator(models.Model):
params = models.ManyToManyField('self',
verbose_name=__(u'parameters'),
related_name='params_of',
blank=True, null=True)
type = models.CharField(max_length=64, verbose_name=__(u'type'))
def get_value(self, record):
# etc
В соответствии с типом get_value не делает то же самое.Он может просто вернуть числовое значение или вычислить значение из числового значения каждого параметра из атрибута params
.Как видите, params
- это рекурсивные отношения м2м.
Теперь моя проблема в том, что у меня есть следующие показатели:
- мужчины
- женщины
- общая популярность
- соотношение мужчин
Если я добавлю men
и women
в качестве параметров total pop
, все в порядке, и я получу свою общую популярностьдинамически рассчитывается.Но если я затем добавлю men
и total pop
в качестве параметров к men ratio
, , тогда total pop
автоматически получит men ratio
в качестве параметра. Это нарушит все.
Почемутот?Как я могу избежать этого?