Как можете посоветовать обойти это ограничение queryset, чтобы это можно было сделать в одном запросе?

|
arttomaz 2022-06-25 12:01:09
arttomaz 2022-06-25 12:00:38

такой результат ожидаю получить из кода urls = [‘http://example.ru’, ‘https://example.com’]
for i in urls:
print(i)
instance.shop_url = i
instance.save()

arttomaz 2022-06-25 12:02:03
arttomaz 2022-06-25 11:54:20

а записывается только https://example.com

dantyan 2022-06-25 12:02:04
так создавай instance внутри цикла
arttomaz 2022-06-25 12:02:33
спасибо понял ошибку )
nezn12 2022-06-25 12:03:17
всем привет, у меня опять проблема с jinja2
dantyan 2022-06-25 12:03:26
Durilka98 2022-06-25 12:01:06

queryset viewset-а фильтрует только основную модель

syn_position получается отдельным запросом

nezn12 2022-06-25 12:03:30
pydjango-734892.jpg

dantyan 2022-06-25 12:04:24
nezn12 2022-06-25 12:03:30

у тебя файл называется так же как и модуль который импортируешь

nezn12 2022-06-25 12:04:38
f
nezn12 2022-06-25 12:04:53
аааа, спасибо большое что помог:)
Durilka98 2022-06-25 12:05:52
dantyan 2022-06-25 12:03:26
queryset viewset-а фильтрует только основную модель

syn_position получается отдельным запросом

вообще никак нельзя объединять в одно? без queryset тоже также получается простым обращением
syn_position_dict = Country.objects.values(‘syn_position__reg_syn_position’).filter(Q(short_name_country=country) & Q(syn_position__id_position=id_position[‘id_position’]))

NikolayCherniy 2022-06-25 12:06:42
arttomaz 2022-06-25 12:02:33
спасибо понял ошибку )

Model.objects.bulk_create([Model(shop_url=url) for url in urls])

arttomaz 2022-06-25 12:07:17
NikolayCherniy 2022-06-25 12:06:42
Model.objects.bulk_create([Model(shop_url=url) for url in urls])

благодарю Вас Николай

dantyan 2022-06-25 12:07:18
Durilka98 2022-06-25 12:05:52
вообще никак нельзя объединять в одно? без queryset тоже также получается простым обращением
syn_position_dict = Country.objects.values(‘syn_position__reg_syn_position’).filter(Q(short_name_country=country) & Q(syn_position__id_position=id_position[‘id_position’]))

ты что то показываешь без контекста
что это ?
где то?

зачем это?
на что я должен ответить ?

Durilka98 2022-06-25 12:09:29
dantyan 2022-06-25 12:07:18
ты что то показываешь без контекста
что это ?
где то?

зачем это?
на что я должен ответить ?

предыдущий я показывал через queryset, а это обращение без queryset просто к модели через тот же сериализатор.
Как можете посоветовать обойти это ограничение queryset, чтобы это можно было сделать в одном запросе?

dantyan 2022-06-25 12:10:40
попробовать указать prefetch c фильтром
NikolayCherniy 2022-06-25 12:11:52
queryset = models.Country.objects.filter(short_name_country=’Абхазия’, syn_position__id_position=0)
не нужен тут Q, ну и если syn_position — m2m возможно есть несктолько связанных инстансов один из которых соответствует
Durilka98 2022-06-25 12:16:32
NikolayCherniy 2022-06-25 12:11:52
queryset = models.Country.objects.filter(short_name_country=’Абхазия’, syn_position__id_position=0)
не нужен тут Q, ну и если syn_position — m2m возможно есть несктолько связанных инстансов один из которых соответствует

без Q попробовал, также осталось(
да связь m2m идет, у вас есть пример кода, чтобы по аналогии сделать?

Durilka98 2022-06-25 12:16:55
с инстансами*
NikolayCherniy 2022-06-25 12:17:35
Durilka98 2022-06-25 12:16:32
без Q попробовал, также осталось(
да связь m2m идет, у вас есть пример кода, чтобы по аналогии сделать?

ну без Q и не должно было поменяться, я просто к тому что в данном случае они не обязательны

NikolayCherniy 2022-06-25 12:21:04
Durilka98 2022-06-25 12:16:32
без Q попробовал, также осталось(
да связь m2m идет, у вас есть пример кода, чтобы по аналогии сделать?

.exclude(~Q(syn_position__id_position=0)) можно попробовать так, или зарегистрировать кастомный лукап not equal

taalaibek095 2022-06-25 12:30:35
Всем привет
Мне нужно чтобы в DateField можно было указывать вручную при создании допустим продукта, auto_now и auto_now_add не подходит, как это сделать?
timurchlk 2022-06-25 12:33:58
Всем привет.
У меня есть поле shipping_address_data = JSONField(), и foreingkey shipping_address. Как я могу присвоить к JSONField модельку?
def create_order_model(self, user, basket, shipping_address, order_number, status, request=None, **kwargs):
«»»Create an order model.»»»
order_data = {‘basket’: basket,
‘number’: order_number,
‘date_placed’: now()
}
if shipping_address:
order_data[‘shipping_address’] = shipping_address
order_data[‘shipping_address_data’] = shipping_address

когда я делаю так, то она возвращает ошибку
Object of type ShippingAddress is not JSON serializable

timurchlk 2022-06-25 12:35:55
есть кто сталкивался с этим?
NikolayCherniy 2022-06-25 12:36:15
taalaibek095 2022-06-25 12:30:35
Всем привет
Мне нужно чтобы в DateField можно было указывать вручную при создании допустим продукта, auto_now и auto_now_add не подходит, как это сделать?

сделать default=timezone.now

taalaibek095 2022-06-25 12:38:10
NikolayCherniy 2022-06-25 12:36:15
сделать default=timezone.now

Откуда импортируется этот параметр?

NikolayCherniy 2022-06-25 12:39:14
timurchlk 2022-06-25 12:33:58
Всем привет.
У меня есть поле shipping_address_data = JSONField(), и foreingkey shipping_address. Как я могу присвоить к JSONField модельку?
def create_order_model(self, user, basket, shipping_address, order_number, status, request=None, **kwargs):
«»»Create an order model.»»»
order_data = {‘basket’: basket,
‘number’: order_number,
‘date_placed’: now()
}
if shipping_address:
order_data[‘shipping_address’] = shipping_address
order_data[‘shipping_address_data’] = shipping_address

когда я делаю так, то она возвращает ошибку
Object of type ShippingAddress is not JSON serializable

shipping_address_data = JSONField(encoder=DjangoJSONEncoder)

NikolayCherniy 2022-06-25 12:39:41
taalaibek095 2022-06-25 12:38:10
Откуда импортируется этот параметр?

from django.utils import timezone

taalaibek095 2022-06-25 12:40:38
NikolayCherniy 2022-06-25 12:39:41
from django.utils import timezone

Спасибо)

NikolayCherniy 2022-06-25 12:41:20
timurchlk 2022-06-25 12:33:58
Всем привет.
У меня есть поле shipping_address_data = JSONField(), и foreingkey shipping_address. Как я могу присвоить к JSONField модельку?
def create_order_model(self, user, basket, shipping_address, order_number, status, request=None, **kwargs):
«»»Create an order model.»»»
order_data = {‘basket’: basket,
‘number’: order_number,
‘date_placed’: now()
}
if shipping_address:
order_data[‘shipping_address’] = shipping_address
order_data[‘shipping_address_data’] = shipping_address

когда я делаю так, то она возвращает ошибку
Object of type ShippingAddress is not JSON serializable

на счет DjangoJSONEncoder не уверен, что он точно подойдет, но если нет — можно написать свой который сможет)

NikolayCherniy 2022-06-25 12:43:01
taalaibek095 2022-06-25 12:40:38
Спасибо)

главное без скобок указывай, иначе там сохранится одно — запуска инстанса приложения и будет записываться оно

taalaibek095 2022-06-25 12:44:18
NikolayCherniy 2022-06-25 12:43:01
главное без скобок указывай, иначе там сохранится одно — запуска инстанса приложения и будет записываться оно

Ок. А как сделать чтобы при дальнейшем редактировании продукта нельзя было изменить эту дату?

taalaibek095 2022-06-25 12:45:26
Нот эдитейбл в админ пай?
taalaibek095 2022-06-25 12:45:45
Такое было да?
taalaibek095 2022-06-25 12:46:11
taalaibek095 2022-06-25 12:45:26
Нот эдитейбл в админ пай?

А вспомнил, ридонли

2022-06-25 12:46:52
переопределяю во вьюсете
def get_queryset(self):
return get_list_or_404(Review, title_id=self.kwargs.get(‘title_id’))
не получает из за того что у модели Review переопределен метод str
но вот это работает
def get_queryset(self):
title = get_object_or_404(Title, id=self.kwargs.get(‘title_id’))
return title.reviews
вопрос как сделать чтоб в первом случае получал список reviews ?
NikolayCherniy 2022-06-25 12:48:00
taalaibek095 2022-06-25 12:46:11
А вспомнил, ридонли

там уже сложнее, можно для админки и форм/сериализаторов выставить отдельную проверку, можно в самой модели

brodskij 2022-06-25 12:48:17
2022-06-25 12:46:52
переопределяю во вьюсете
def get_queryset(self):
return get_list_or_404(Review, title_id=self.kwargs.get(‘title_id’))
не получает из за того что у модели Review переопределен метод str
но вот это работает
def get_queryset(self):
title = get_object_or_404(Title, id=self.kwargs.get(‘title_id’))
return title.reviews
вопрос как сделать чтоб в первом случае получал список reviews ?

сделать нормально фильтр по моделе Review

brodskij 2022-06-25 12:48:49
и причём тут str метод
taalaibek095 2022-06-25 12:49:34
NikolayCherniy 2022-06-25 12:48:00
там уже сложнее, можно для админки и форм/сериализаторов выставить отдельную проверку, можно в самой модели

А да оказывается при ридонли даже при добавлении не редактируется

NikolayCherniy 2022-06-25 12:49:52
taalaibek095 2022-06-25 12:49:34
А да оказывается при ридонли даже при добавлении не редактируется

https://books.agiliq.com/projects/django-admin-cookbook/en/latest/uneditable_existing.html

NikolayCherniy 2022-06-25 12:50:39
2022-06-25 12:46:52
переопределяю во вьюсете
def get_queryset(self):
return get_list_or_404(Review, title_id=self.kwargs.get(‘title_id’))
не получает из за того что у модели Review переопределен метод str
но вот это работает
def get_queryset(self):
title = get_object_or_404(Title, id=self.kwargs.get(‘title_id’))
return title.reviews
вопрос как сделать чтоб в первом случае получал список reviews ?

а у review есть fk на Title?

2022-06-25 12:51:16
NikolayCherniy 2022-06-25 12:50:39
а у review есть fk на Title?

да, иначе бы второй метод не сработал бы

NikolayCherniy 2022-06-25 12:51:32
2022-06-25 12:51:16
да, иначе бы второй метод не сработал бы

покажи модель Review

2022-06-25 12:52:01
NikolayCherniy 2022-06-25 12:51:32
покажи модель Review

class Review(models.Model):
title = models.ForeignKey(Title, on_delete=models.CASCADE, related_name=’reviews’)
text = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name=’reviews’)
score = models.PositiveSmallIntegerField(choices=SCORE_CHOICES, blank=True, null=True)
pub_date = models.DateTimeField(auto_now_add=True)

def __str__(self):
return f'{self.author}: {self.text}, {self.pub_date:%d.%m.%Y %H:%M}’

NikolayCherniy 2022-06-25 12:52:06
и ошибку тоже)
brodskij 2022-06-25 12:52:36
2022-06-25 12:52:01
class Review(models.Model):
title = models.ForeignKey(Title, on_delete=models.CASCADE, related_name=’reviews’)
text = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name=’reviews’)
score = models.PositiveSmallIntegerField(choices=SCORE_CHOICES, blank=True, null=True)
pub_date = models.DateTimeField(auto_now_add=True)

def __str__(self):
return f'{self.author}: {self.text}, {self.pub_date:%d.%m.%Y %H:%M}’

а если так?

get_list_or_404(Title.reviews, title=self.kwargs.get(‘title_id’))

2022-06-25 12:53:12
NikolayCherniy 2022-06-25 12:52:06
и ошибку тоже)

Not Found: /api/v1/titles/1/reviews/1/

NikolayCherniy 2022-06-25 12:53:47
2022-06-25 12:53:12
Not Found: /api/v1/titles/1/reviews/1/

а ок, ну можешь тогда принтануть self.kwargs.get(‘title_id’) перед ошибкой

taalaibek095 2022-06-25 12:54:23
NikolayCherniy 2022-06-25 12:49:52
https://books.agiliq.com/projects/django-admin-cookbook/en/latest/uneditable_existing.html

Благодарю)

|