Size: a a a

Django [ru] #STAY HOME

2020 May 19

S

Stanley in Django [ru] #STAY HOME
Boris Krutskih
ну почти достигнута))) при создании заказа с админки сейчас пробую, стол должен помечаться как is_reserved, я так понял этого добиться можно в моделях используя метод save()?
в админке можно просто галочку поставить, а при отправке ПОСТА с фронта передавай is_reserved=True
источник

S

Stanley in Django [ru] #STAY HOME
например
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
Stanley
в админке можно просто галочку поставить, а при отправке ПОСТА с фронта передавай is_reserved=True
Так вот именно😁
Если поставить галочку, то бронь применяется не на определеный день, а на все
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
Я ж и говорю, мож чето у меня не то с моделями?)
источник

S

Stanley in Django [ru] #STAY HOME
Boris Krutskih
Так вот именно😁
Если поставить галочку, то бронь применяется не на определеный день, а на все
незнаю как ты галочку на все столы ставишь но у тебя в модели у каждого стола есть галочка
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
Stanley
незнаю как ты галочку на все столы ставишь но у тебя в модели у каждого стола есть галочка
да если поставить галочку он помечается как бронироварный, только он должен отмечаться на определенный день
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
на остальные даты он должен быть свободен
источник

S

Stanley in Django [ru] #STAY HOME
Boris Krutskih
на остальные даты он должен быть свободен
а, догнал! Тебе надо постом создавать Ордер на дату со столом ид такойто, кароче все сложнее ))) запрос менять надо))
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
Stanley
а, догнал! Тебе надо постом создавать Ордер на дату со столом ид такойто, кароче все сложнее ))) запрос менять надо))
да)
источник

S

Stanley in Django [ru] #STAY HOME
is_reserved не нужен походу вообще :)
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
Stanley
is_reserved не нужен походу вообще :)
ну вот и я вот это думаю зачем я его впилил
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
Stanley
is_reserved не нужен походу вообще :)
только теперь получается, в модели order нужно типа создать reserve_id?
источник

S

Stanley in Django [ru] #STAY HOME
Boris Krutskih
ну вот и я вот это думаю зачем я его впилил
Значит возвращай те столы у которых на переданую дату есть ордер
источник

S

Stanley in Django [ru] #STAY HOME
они будут резерв
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
Stanley
Значит возвращай те столы у которых на переданую дату есть ордер
сложновато
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
получается здесь нужно фильтр изменить?
        mytables = Table.objects.filter(order_table__date=date)

@WStanley
источник

S

Stanley in Django [ru] #STAY HOME
попробуй так
from django.db.models import Count
from django.db.models import Q
Table.objects.annotate(cnt=Count('order_table', filter=Q(order_table__date=date))).filter(cnt__gt=0)
поидее должно вернуть столы у кот есть ордер, но могу ошибаться))
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
Stanley
попробуй так
from django.db.models import Count
from django.db.models import Q
Table.objects.annotate(cnt=Count('order_table', filter=Q(order_table__date=date))).filter(cnt__gt=0)
поидее должно вернуть столы у кот есть ордер, но могу ошибаться))
def check_free_tables(request):
   from django.db.models import Count
   from django.db.models import Q
   
   if request.is_ajax and request.method == 'GET':
       date = request.GET.get('date')
       mytables = Table.objects.annotate(cnt=Count('order_table', filter=Q(order_table__date=date))).filter(cnt__gt=0)
       print(mytables)
       ser_instance = serializers.serialize('json', list(mytables), fields=('id', 'is_reserved'))
       print(ser_instance)
       return JsonResponse({'tables': ser_instance}, status=200, safe=False)

пустой queryset возвращает
источник

S

Stanley in Django [ru] #STAY HOME
покажи запрос который получился
print(Table.objects.annotate(cnt=Count('order_table', filter=Q(order_table__date=date))).filter(cnt__gt=0).query)
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
Stanley
покажи запрос который получился
print(Table.objects.annotate(cnt=Count('order_table', filter=Q(order_table__date=date))).filter(cnt__gt=0).query)
SELECT "restaurant_table"."id", "restaurant_table"."hall_id", "restaurant_table"."shape", "restaurant_table"."number", "restaurant_table"."seats", "restaurant_table"."width", "restaurant_table"."height", "restaurant_table"."coordinate_x", "restaurant_table"."coordinate_y", "restaurant_table"."is_reserved", C
OUNT(CASE WHEN "restaurant_order"."date" IS NULL THEN "restaurant_order"."id" ELSE NULL END) AS "cnt" FROM "restaurant_table" LEFT OUTER JOIN "restaurant_order" ON ("restaurant_table"."id" = "restaurant_order"."table_id") GROUP BY "restaurant_table"."id", "restaurant_table"."hall_id", "restaurant_table"."sha
pe", "restaurant_table"."number", "restaurant_table"."seats", "restaurant_table"."width", "restaurant_table"."height", "restaurant_table"."coordinate_x", "restaurant_table"."coordinate_y", "restaurant_table"."is_reserved" HAVING COUNT(CASE WHEN ("restaurant_order"."date" IS NULL) THEN "restaurant_order"."id"
ELSE NULL END) > 0
источник