Size: a a a

Django [ru] #STAY HOME

2020 June 08

AK

Andrew Kuskov in Django [ru] #STAY HOME
Второй вопрос про форму, как обрабатывать post-запрос для комментария, сейчас форму повесил на отдельный урл-адрес, хотел бы ее обрабатывать на том же урл-адресе, что и находится статья. Однако я вижу ошибку: Method Not Allowed (POST): /programming/grabbing-url/. Я так понимаю, что наследование от DetailView подразумевает использование только GET-запросов.  Есть ли варианты передавать и POST?
источник

DO

D. Ouhh in Django [ru] #STAY HOME
Andrew Kuskov
Второй вопрос про форму, как обрабатывать post-запрос для комментария, сейчас форму повесил на отдельный урл-адрес, хотел бы ее обрабатывать на том же урл-адресе, что и находится статья. Однако я вижу ошибку: Method Not Allowed (POST): /programming/grabbing-url/. Я так понимаю, что наследование от DetailView подразумевает использование только GET-запросов.  Есть ли варианты передавать и POST?
в mixins поищи CreateViewMixin или как-то так
источник

AK

Andrew Kuskov in Django [ru] #STAY HOME
D. Ouhh
в mixins поищи CreateViewMixin или как-то так
ага, спасибо, пошел гуглить
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Alex Dem
@dantyan

Не подскажешь пожалуйста еще чуть-чуть?
( все еще тема про кучу запросов при get list на modelViewSet)

я понял что основной бич - это получение сериализированных FK-полей
есть некоторые поля сериализатора, для создания которых генерируется 10-15 запросов/один parent instance

то есть, если API выводит 20 записей, то при получении этого поля для всех этих записей будет сгенерировано 20 инстансов * 15 запросов; 300 запросов только чтобы получить одно поле (сильно!)


например

(Функция основного сериализатора)

# получение readonly поля транзакции
# его модельным сериализатором

def get_transaction(self, obj):
    return TransactionEntrySerializer(obj.entry_transactions.first()).data

entry_transactions - related name FK поля

как ты боролся с этим?
prefetch_related("entry_transactions__<field to related model>") не помогает?
я не помню откуда будет доставать first() из кеша или новый запрос сделает
источник

DO

D. Ouhh in Django [ru] #STAY HOME
Andrew Kuskov
ага, спасибо, пошел гуглить
RetrieveModelMixin, CreateModelMixin - то что нужно
источник

AD

Alex Dem in Django [ru] #STAY HOME
Artem Gubatenko
prefetch_related("entry_transactions__<field to related model>") не помогает?
я не помню откуда будет доставать first() из кеша или новый запрос сделает
да, как раз именно так и пытался, почему-то не похоже что работает, запросы все также плодятся(
источник

AK

Andrew Kuskov in Django [ru] #STAY HOME
D. Ouhh
RetrieveModelMixin, CreateModelMixin - то что нужно
еще раз спасибо
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Alex Dem
да, как раз именно так и пытался, почему-то не похоже что работает, запросы все также плодятся(
можно еще попробовать Prefetch(), ему в queryset= параметр подать запрос с select/prefetch_related()
источник

K

KhSV in Django [ru] #STAY HOME
Переслано от KhSV
Всем привет!
В наличии имеется бинарное дерево представленное следующим видом: Пример
left_children =  [1, 3, 5, 7, -1, 9, 11, -1, -1, -1, -1, -1, -1] # левые потомки
right_children = [2, 4, 6, 8, -1, 10, 12, -1, -1, -1, -1, -1, -1] # правые потомки

Индекс массивов соответствует номеру вершины дерева.-1 в массиве означает, что у вершины по этому индексу нету детей. Пытаюсь получить словарь, где ключом является индекс вершины (листа), а значением массив целых чисел указывающих путь до этого листа. Для массивов выше нужно получить:
result = {
   4: [1, 0], # для того, чтобы попасть в узел 4 нужно пройти от узла 0 к узлу 1, а потом к узлу 4
   7: [3, 1, 0],
   8: [3, 1, 0],
   9: [5, 2, 0],
   10: [5, 2, 0],
   11:[6, 2, 0],
   12: [6, 2, 0]
}

Само дерево выглядит следующим образом:
источник

AD

Alex Dem in Django [ru] #STAY HOME
Artem Gubatenko
можно еще попробовать Prefetch(), ему в queryset= параметр подать запрос с select/prefetch_related()
Спасибо большое!, посмотрю
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Alex Dem
Спасибо большое!, посмотрю
только смотри за нагрузкой, а то, если объектов много, может оно того не стоит и лучше будет получить из БД словарь)
источник

AK

ARTUR KNYAZEV in Django [ru] #STAY HOME
quest = models.ForeignKey(QuerysAutor,on_delete=models.CASCADE,default='')
NameError: name 'QuerysAutor' is not defined
источник

AK

ARTUR KNYAZEV in Django [ru] #STAY HOME
что я делаю не так
источник

AL

Artyom Lazovikov in Django [ru] #STAY HOME
Может Author?
источник

N

Nire in Django [ru] #STAY HOME
Не правильно написал
источник

EM

Eri Meilis in Django [ru] #STAY HOME
А какой  bestpractice  по отправке  email?  Выяснилось, что "крутая фирма" настроила отправку через  smtp  через свой яндекс-ящик. Ну и оно работало через раз, сейчас совсем перестало...
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
ARTUR KNYAZEV
quest = models.ForeignKey(QuerysAutor,on_delete=models.CASCADE,default='')
NameError: name 'QuerysAutor' is not defined
Модель автора ниже? Или в другом файле??
источник

N

Nire in Django [ru] #STAY HOME
Eri Meilis
А какой  bestpractice  по отправке  email?  Выяснилось, что "крутая фирма" настроила отправку через  smtp  через свой яндекс-ящик. Ну и оно работало через раз, сейчас совсем перестало...
Надо иметь нормальный шлюз с возможностью подтверждения передачи. И а бд хранить статус отправки.
источник

EM

Eri Meilis in Django [ru] #STAY HOME
Nire
Надо иметь нормальный шлюз с возможностью подтверждения передачи. И а бд хранить статус отправки.
А можно чуть подробнее?
источник

AK

ARTUR KNYAZEV in Django [ru] #STAY HOME
Nikolay Cherniy
Модель автора ниже? Или в другом файле??
ниже
источник