Django: Как я могу определить, одинаковое ли качество всех объектов в RelatedManager? - PullRequest
1 голос
/ 25 марта 2011

Допустим, у меня есть ManyToManyField от Swallow - => Coconut.

Также предположим, что у Coconut есть логическое поле с именем "Young".

Для данной ласточки какмогу ли я сказать, все ли ее кокосы молодые?

(Что я действительно ищу, так это не столько умение определить, молоды ли кокосовые орехи, сколько способ определить, есть ли расхождение в значениисреди элементов в наборе запросов.)

Ответы [ 2 ]

3 голосов
/ 25 марта 2011

ОК, я понял это. Мне нужно:

swallow.coconuts.aggregate(test=Variance('young'))

Если это 0, я знаю, что они все одинаковые.

0 голосов
/ 25 марта 2011
if there is no `coconut` for a `swallow` that is `not young`
then all `coconuts` are `young`

EDIT:

Насколько мне известно, не существует метода набора запросов, который мог бы сделать это, но вы можете сделать свой собственный, например:

# property_values is a dictionary : {prop1:val1, prop2:val2,...}
# you can check for multiple properties

def is_same_property_value(related_manager, property_values)
    return related_manager.filter(~Q(**property_values)).count() == 0


res = is_same_property_value(swallow.coconuts_set, {'young':true})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...