Size: a a a

Django [ru] #STAY HOME

2019 August 20

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
🔐{% ɹoƃǝʎ %}
1) зачем ты изменяешь реквест когда можно сразу сериализовывать пост/гет запрос
2) когда сохраняешь сериалайзер, создается объект модели от которой он создан
3) исходя из третьего, с этим объектом модели можно работать как обычно, пишешь:

    user_object = serializer.save()
    user_object.contora = request.user.contora
    user_object.save()

Как то примерно так.
вуаля, юзер имеет ту же контору что и залогиненый юзер
источник

l

len in Django [ru] #STAY HOME
ох, СПАСИБО, сейчас буду пробовать
источник

AI

Alexandr Ivanov in Django [ru] #STAY HOME
all_data = money.objects.filter(
           archive=False).values(
           "user__first_name",
           "user__last_name",
           "user__username",
           "user__work_department"
           ).annotate(
           Sum("value"))


Считаю деньги пользователей. work_department в данном случае TreeForeignKey.

Как мне достать весь путь дерева?
источник

AI

Alexandr Ivanov in Django [ru] #STAY HOME
user__work_department
 сейчас id. Пробовал через property, не работает
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
Alexandr Ivanov
all_data = money.objects.filter(
           archive=False).values(
           "user__first_name",
           "user__last_name",
           "user__username",
           "user__work_department"
           ).annotate(
           Sum("value"))


Считаю деньги пользователей. work_department в данном случае TreeForeignKey.

Как мне достать весь путь дерева?
в work_departament можно и дальше через __ доставать свойства
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
типа user__work_departament__name
источник

AI

Alexandr Ivanov in Django [ru] #STAY HOME
Это то, понятно, но при выборе user__work_departament__name выводится всего лишь текущий лист дерева
Например, категория 3

А мне нужно сгенерить весь путь: Категория 1 -> Категория 2 -> Категория 3
источник

OS

Oleksii Suvertok in Django [ru] #STAY HOME
Всем привет. Поскажите. Можли ли как то так сделать. У меня есть например 3 класа

class A:
  pass

class B:
a = models.OneToOne(A, related_name='class_b')

class C:
a = models.OneToOne(A, related_name='class_c')

a = A.objects.get(pk=1)
И есть такой цикл
for tag in ['class_b','class_c']:
  if not hasattr(a, tag):
       И тут мне нужно сделать B.create(a=a) или C.create(a=a). Но как можно взять клас по related_name? Ведь я не знаю объект какого класса уже создан. Спасибо за помощь
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Oleksii Suvertok
Всем привет. Поскажите. Можли ли как то так сделать. У меня есть например 3 класа

class A:
  pass

class B:
a = models.OneToOne(A, related_name='class_b')

class C:
a = models.OneToOne(A, related_name='class_c')

a = A.objects.get(pk=1)
И есть такой цикл
for tag in ['class_b','class_c']:
  if not hasattr(a, tag):
       И тут мне нужно сделать B.create(a=a) или C.create(a=a). Но как можно взять клас по related_name? Ведь я не знаю объект какого класса уже создан. Спасибо за помощь
ну самый простой вариат
if tag == 'class_b':
источник

OS

Oleksii Suvertok in Django [ru] #STAY HOME
Просто там много вариантов в цикле. Не 2
источник

DT

Dan Tyan in Django [ru] #STAY HOME
либо попробовать что то вроде

if not hasattr(a, tag):
   getattr(a, tag).create()
источник

OS

Oleksii Suvertok in Django [ru] #STAY HOME
Сложный вариант есть?
источник

OS

Oleksii Suvertok in Django [ru] #STAY HOME
Ого.. если так можно попробую
источник

YP

Yevhenii Prontsevych in Django [ru] #STAY HOME
Какой то маппинг с диктом можно. Типа {'class_b': B, 'class_c': C}
источник

OS

Oleksii Suvertok in Django [ru] #STAY HOME
Да.. был вариант.. уже что-то такое делаю для url..  там только class-a, class-b
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
Oleksii Suvertok
Всем привет. Поскажите. Можли ли как то так сделать. У меня есть например 3 класа

class A:
  pass

class B:
a = models.OneToOne(A, related_name='class_b')

class C:
a = models.OneToOne(A, related_name='class_c')

a = A.objects.get(pk=1)
И есть такой цикл
for tag in ['class_b','class_c']:
  if not hasattr(a, tag):
       И тут мне нужно сделать B.create(a=a) или C.create(a=a). Но как можно взять клас по related_name? Ведь я не знаю объект какого класса уже создан. Спасибо за помощь
from django.db.models.loading import get_model
источник

OS

Oleksii Suvertok in Django [ru] #STAY HOME
Dan Tyan
либо попробовать что то вроде

if not hasattr(a, tag):
   getattr(a, tag).create()
Так не получилось
источник

DT

Dan Tyan in Django [ru] #STAY HOME
код покажи
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
Oleksii Suvertok
Так не получилось
источник

OS

Oleksii Suvertok in Django [ru] #STAY HOME
Спасибо. Сейчас пробую.
источник