Size: a a a

Django [ru] #STAY HOME

2019 February 26

DT

Dan Tyan in Django [ru] #STAY HOME
django_migrations
источник

p

pavel in Django [ru] #STAY HOME
спс
источник

С

Сергей in Django [ru] #STAY HOME
Всем привет, подскажите с куском кода.
a = PortfolioWork.objects.all().annotate(mycolumn=Value(len(F('tags').all()) - len(portfolio.tags.all()), output_field=models.IntegerField()))


В данном запросе хочу добавить к объекту разность между кол-вом связанных с ним объектов tags и длинной иного листа значений. Но получаю ошибку "'F' object has no attribute 'all'". Разве F('field_name') не возвращает значение поля?
источник

С

Сергей in Django [ru] #STAY HOME
Как взять поле модели при вызове annotate?
источник

PB

Petr B. in Django [ru] #STAY HOME
django.db.models.Count
источник

С

Сергей in Django [ru] #STAY HOME
Count же возвращает сумму объектов? Как это применить для получения разности?
источник

PB

Petr B. in Django [ru] #STAY HOME
Попробуйте вычесть для Count
источник

С

Сергей in Django [ru] #STAY HOME
a = PortfolioWork.objects.all().annotate(mycolumn=Value(models.Count('tags') - len(portfolio.tags.all()), output_field=models.IntegerField()))

Будет падать на int() argument must be a string, a bytes-like object or a number, not 'CombinedExpression' при попытке обратиться к объекту
источник

PB

Petr B. in Django [ru] #STAY HOME
Ну, или сначала в аннотейте эти значения вытаскиваем, в следующем - вычитаем
источник

С

Сергей in Django [ru] #STAY HOME
А как в аннотейте обращаться к этим значениям? Не могу понять
источник

С

Сергей in Django [ru] #STAY HOME
a = PortfolioWork.objects.all().annotate(
           mycolumn=models.Count('tags')
       ).annotate(
           mc2=Value(F('mycolumn') - 10, output_field=models.IntegerField())
       )

Падает на аналогичной ошибке
источник

PB

Petr B. in Django [ru] #STAY HOME
Сергей
А как в аннотейте обращаться к этим значениям? Не могу понять
Ну
.annotate(
afield=Count(ololo),
bfield=Count(ololo2)
).annotate(
cfield=F('afield')-F('bfield'),
)
источник

PB

Petr B. in Django [ru] #STAY HOME
Сергей
a = PortfolioWork.objects.all().annotate(
           mycolumn=models.Count('tags')
       ).annotate(
           mc2=Value(F('mycolumn') - 10, output_field=models.IntegerField())
       )

Падает на аналогичной ошибке
10 оберните в Value()
источник

PB

Petr B. in Django [ru] #STAY HOME
Я бы только все же ради этого значения сделал в том же первом аннотейте Count ещё один
источник

С

Сергей in Django [ru] #STAY HOME
a = PortfolioWork.objects.all().annotate(
           mycolumn=models.Count('tags'),
           mycol2=Value(0, models.IntegerField())
       ).annotate(
           mc2=F('mycolumn')-F('mycol2')
       )
источник

PB

Petr B. in Django [ru] #STAY HOME
Работает?
источник

PB

Petr B. in Django [ru] #STAY HOME
.all() можно убрать
источник

С

Сергей in Django [ru] #STAY HOME
Да, спасибо
источник

EC

Elias Cooper in Django [ru] #STAY HOME
Всем привет , вопрос немного не по теме , кто настраивал Postfix на убунте ?
источник

J

JTProgru in Django [ru] #STAY HOME
Elias Cooper
Всем привет , вопрос немного не по теме , кто настраивал Postfix на убунте ?
источник