Size: a a a

Django [ru] #STAY HOME

2021 June 07

JG

Just Go in Django [ru] #STAY HOME
да
источник

JG

Just Go in Django [ru] #STAY HOME
и на что я вообще рассчитывал?)
источник

KV

Konstantin Vinogrado... in Django [ru] #STAY HOME
Может кто сталкивался:

Делаю кастомную форму.
Добавляю  радио-батон
Тут будет использоваться следующий виджет:
forms.RadioSelect

Далее хочу кастомизировать его, но не могу найти параметр value
Например id итема находится по адресу
item.id_for_label
А имя группы находится:
field.name
Нужно найти value радио батона.

Проблема в том что я не знаю вообще какие есть параметры у виджета в шаблонизаторе
источник

СЧ

Сергей Чурмин... in Django [ru] #STAY HOME
Друзья а напомните фильт для моделей dstetime что бы выбрать все записи за последние сутки, туплю а сдать надо завтра с утра(
источник

PA

Pavel Aksenov in Django [ru] #STAY HOME
Так, я вот какой способ нашёл
A.objects.annotate(
           positive=Sum('items__amount', filter=Q(items__type='1')),
           negative=Sum('items__amount', filter=~Q(items__type='1')),
           sum=F('positive')-F('negative')
       )

Или хочется с Case When?)
источник

Д

Данила in Django [ru] #STAY HOME
Хотелось бы с Case When, там много условий)
источник

PA

Pavel Aksenov in Django [ru] #STAY HOME
Може такое Model.objects.filter(created__date='2021-06-07') или нужно последние 24 часа?
источник

СЧ

Сергей Чурмин... in Django [ru] #STAY HOME
нужны часы, там что то gte вроде
источник

СЧ

Сергей Чурмин... in Django [ru] #STAY HOME
Инет тупой посмотреть апи не могу(
источник

PA

Pavel Aksenov in Django [ru] #STAY HOME
Без волшебства не получится. Толкьо волшебство спасёт мир. Сейчас поищу
источник

Д

Данила in Django [ru] #STAY HOME
😂
источник

PA

Pavel Aksenov in Django [ru] #STAY HOME
Model.objects.filter(created__gte=datetime.datetime.now()-datetime.timedelta(1))
источник

СЧ

Сергей Чурмин... in Django [ru] #STAY HOME
точно, спасибо добрый человек
источник

PA

Pavel Aksenov in Django [ru] #STAY HOME
В общем начнем с такого, снначала сделать надо кастомный класс для сабквери
class SumSubquery(Subquery):
   def __init__(self, queryset, sum_field, output_field=None, **extra):
       extra.update(sum_field=sum_field)
       super().__init__(queryset, output_field, **extra)

   template = '(SELECT SUM(%(sum_field)s) FROM (%(subquery)s) _sum)'
Далее создаётся кверисет для субквери
item_queryset = (
   Item.objects.filter(a_pk=OuterRef('pk'))
   .annotate(
       _amount=Case(
           When(type='1', then=0 - F('amount')),
           default=F('amount')
       )
   )
   .values('_amount')
)

и вычисляем
A.objects.annotate(
   sum=SumSubquery(
       item_queryset,
       sum_field='total_sum',
       output_field=models.IntegerField()
   )
)
источник

PA

Pavel Aksenov in Django [ru] #STAY HOME
Надеюсь код выше работает)
источник

Д

Данила in Django [ru] #STAY HOME
Попробую)
источник

Д

Данила in Django [ru] #STAY HOME
django.db.utils.ProgrammingError: column "total_sum" does not exist )
источник

PA

Pavel Aksenov in Django [ru] #STAY HOME
должно быть _amount)
источник

Д

Данила in Django [ru] #STAY HOME
Вроде бы работает, спасибо
А то что должно быть _amount, логично, уже мозги кипят к ночи)
источник

PA

Pavel Aksenov in Django [ru] #STAY HOME
Ага, мои тоже булькают)
источник