
Дмитрий
13.04.2018
13:07:32
а как сделать лучше сохранение/обновление нескольких записей через serializer many=True? Определить сейв в сериализаторе и название в мете этого сериализоватора list_serializer_class,
либо создать SerializerList, в котором определить метод save?

Petr
13.04.2018
13:08:30
приветы всем в пятницу 13-ое
как правильно отфильтровать унаследованные модели?
т.е. есть не-абстрактная модель Image, есть унаследованная от нее Sticker (добавлено несколько полей) - вопрос - как выбрать собственно Images, но не выбрать Stickerы?

Дмитрий
13.04.2018
13:10:50

Dude
13.04.2018
13:10:50
как это ?
ну save() это же просто функция, я же могу ее периодически вызывать

Google

Petr
13.04.2018
13:11:06

Dan
13.04.2018
13:11:07
можешь

Artem
13.04.2018
13:11:35

Petr
13.04.2018
13:12:23

Artem
13.04.2018
13:13:06

Petr
13.04.2018
13:14:24

Artem
13.04.2018
13:14:29
Чем не подходит фильтрация через Image.objects.filter?

Bogdan
13.04.2018
13:14:38
Посмотри пакет Джанго полиморфик
у него ужасная производительность. в одном из проектов с ним число запросов к его таблицам было больше, чем ко всем остальным вместе взятым (3 полимодели против 30+ обычных).

Dan
13.04.2018
13:15:46
без этого
Думаю Артем спрашивал как наследовались модели

Petr
13.04.2018
13:16:22

Dan
13.04.2018
13:18:35
выбирай спокойно

Google

Petr
13.04.2018
13:19:39

Dan
13.04.2018
13:20:06
ну
что не так то ?

Petr
13.04.2018
13:21:18
через is_paid__isnull?

Artem
13.04.2018
13:21:19
Тебе нужны Image, которые не являются Sticker?

Dan
13.04.2018
13:21:37

Petr
13.04.2018
13:21:43

Dan
13.04.2018
13:21:54
а ты у кого запрос делаешь ?
Image.objects.all()
вытаскивает и стикеры ?

Petr
13.04.2018
13:22:42

Dan
13.04.2018
13:23:59
где то ты меня обманываешь

Petr
13.04.2018
13:24:04
т.е. надо делать абстрактную модель дженерикимэйдж и от нее наследовать имэйдж и стикер?

Dan
13.04.2018
13:24:21
отдельно добаввь в Image
не через стикеры
у тебя будет 16 записей в Image и 15 записей в стикерах

Artem
13.04.2018
13:25:30
Image.objects.exclude(id__in=Sticker.objects.values_list('image_id', flat=True))

Petr
13.04.2018
13:25:52

Dan
13.04.2018
13:26:12
и тебе нужно вытащить только 16й?

Petr
13.04.2018
13:26:28

Google

Petr
13.04.2018
13:26:39
с exclude поди оверхед большой
хотя и ладно пока

Artem
13.04.2018
13:27:06
Оверхед на уровне запроса
… where “id” not in (select “image_ptr_id” … )

Dan
13.04.2018
13:28:40
ага
Image.objects.filter(sticker__isnull=True)

Petr
13.04.2018
13:29:24
я тупой, просите

Dan
13.04.2018
13:29:51
будет что то вроде
SELECT "user_user"."id", .... FROM "user_user" LEFT OUTER JOIN "profile_relative" ON ("user_user"."id" = "profile_relative"."user_ptr_id") WHERE "profile_relative"."user_ptr_id" IS NULL

Artem
13.04.2018
13:29:55

Dude
13.04.2018
15:03:24
Как добавить форму в такую вьюху
https://dpaste.de/u0N4

Dan
13.04.2018
15:04:21
ты либо форму прописывай
либо поля перечисляй

Dude
13.04.2018
15:05:21
я хочу вообще другую форму добавить в эту вьюху

Dan
13.04.2018
15:05:36
в get_context_data

Dude
13.04.2018
15:06:33
а в аргументах что будет ?
а все
вижу, спасибо

Dan
13.04.2018
15:07:35
единственное обрабатывать надо в post

Dude
13.04.2018
15:13:22
https://dpaste.de/XzV9
Что именно обрабатывать? Вот так работает

Dan
13.04.2018
15:13:59
данные с формы ты как получаешь ?

Google

Dude
13.04.2018
15:15:34
form.instance.myfield
или о чем речь

Dan
13.04.2018
15:16:23
я про то что как обрабатываешь данные посланые второй формой

Dude
13.04.2018
15:22:00
а никак
лол

Dan
13.04.2018
15:22:16
апплодисменты

Dude
13.04.2018
15:22:30
мне нужно определить request в функции класса

Dan
13.04.2018
15:22:49
во въюхе ?

Dude
13.04.2018
15:23:51
да, потому что я не могу сделать if request == 'POST' или form = MyForm(request.POST). Стало быть в аргументе нужно написать что-то типа self.request

Dan
13.04.2018
15:24:48
ну во въю да self.request
а так
def post(self, request, *args, **kwargs):
response = super().post(request, *args, **kwargs)
field_form = SellProductFieldsForm(data=request.POST, instance=self.get_object())
if field_form.is_valid():
field_form.save()
пример обработки второй формы
которая отправляется одним запросом

Dude
13.04.2018
15:27:41
ого, нужно было response переопределять , "да, это жестко". Спасибо
только почему модели в super нет?
точнее класса

Dan
13.04.2018
15:28:55
форма класса описывается в свойсвах классах

Dude
13.04.2018
15:29:13
понял

Dan
13.04.2018
15:29:25
response = super().post(request, *args, **kwargs)
это по сути выхов встроенного механизма
остальное ручная обработка второй формы

Google

Dude
13.04.2018
15:30:33
видимо этим мы говорим что внезависимости в каком классе лежит вьюха обрабатывать ее постом?
функцию эту

Dan
13.04.2018
15:31:05
не понял

Dude
13.04.2018
15:31:40
а ретурн можешь показать?

Dan
13.04.2018
15:31:54
return response

Dude
13.04.2018
15:31:57
return response?
ну все ясно тогда, спасибо
эмммм get_context_data() missing 1 required positional argument: 'request'def get_context_data(self, request, *args, **kwargs):
response = super().post(request, *args, **kwargs)
я же request вернул в аргумент response

Dan
13.04.2018
15:35:49
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)

Eugene
13.04.2018
15:36:06
def get_context_data(self, **kwargs):
# Call the base implementation first to get a context
context = super().get_context_data(**kwargs)
# Add in a QuerySet of all the books
context['book_list'] = Book.objects.all()
return context
?

Dude
13.04.2018
15:37:09
как вернуть контекст я понял, что с реквестом делать?

Eugene
13.04.2018
15:37:42
self.request

Dude
13.04.2018
15:37:53
self.request
да
спасибо)

Konstantin
13.04.2018
15:50:48
Может кто то подсказать по django-cron? Создаю крон как в доках, но он срабатывает только раз