Size: a a a

Django [ru] #STAY HOME

2021 February 10

T

TENG_TECH in Django [ru] #STAY HOME
а без жса реально сделать превью имейджа в аплоаде?
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Sergey Matveyev
Всем привет!
Есть очень большая таблица, делаю экспорт данных из неё. Экспорт идёт по айдишкам внешнего ключа, которые приходят с фронта, их может быть как пару десятков так и пару десятков тысяч. Подскажите как лучше сделать c точки зрения обработки больших запросов?:
rows = ModelName.objects.filter(fk_id__in=fk_ids)
for row in rows.iterator():
   ...операции с row...

Или:
rows_ids = ModelName.objects.filter(fk_id__in=fk_ids).values_list('id, flat=True)
for row_id in rows_ids:
  row = ModelName.objects.get(id=row_id)
   ...операции с row...

Или вообще как-то иначе?
в обоих случаях получишь кол-во запросов >= кол-ву ИДшников

бери по частям (например макс. по 100) и в виде словарей
источник

SM

Sergey Matveyev in Django [ru] #STAY HOME
Artem Gubatenko
в обоих случаях получишь кол-во запросов >= кол-ву ИДшников

бери по частям (например макс. по 100) и в виде словарей
Это то, что называется chunks?
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Nik S
видимо def list()
при def filter_queryset() -
мешает отфильтрованному кверисету и возвращает изначальный кверисет .all()
и вовсе не нужен
Гет кверисет у тебя переписывает родительский который вызывает фильтрацию
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Nik S
А как такое может быть - у меня на drf заклинило admin-а авторизованного и не logout-иться? даже после перезапуска сервера.
при том что на фронте - состояние неавторизованое по basicauth
Скорее всего не прописан логаут рестовский
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Sergey Matveyev
Это то, что называется chunks?
источник

A

Andrey in Django [ru] #STAY HOME
а для filter() __range работает включительно?
Например:
objects.filter(num__range=[5, 10]
вернет object с num=5 и num=10?
источник

SM

Sergey Matveyev in Django [ru] #STAY HOME
Спасибо большое!
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Andrey
а для filter() __range работает включительно?
Например:
objects.filter(num__range=[5, 10]
вернет object с num=5 и num=10?
Да
источник

NS

Nik S in Django [ru] #STAY HOME
Nikolay Cherniy
Гет кверисет у тебя переписывает родительский который вызывает фильтрацию
на самом деле я его убирал до этого состояния - но всеравно не фильтрует. Помогает убрать def list()
class WishlistsViewSet(viewsets.ModelViewSet):
   queryset = Wishlist.objects.all()
   serializer_class = WishlistModelSerializer
   permission_classes = [IsAuthenticated]

   def filter_queryset(self, queryset):
       queryset = super().filter_queryset(queryset)
       queryset = queryset.filter(utilizator_id=self.request.user.id)
       return queryset

   def list(self, request, *args, **kwargs):
       return Response(self.serializer_class(self.queryset, many=True).data)
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Nik S
на самом деле я его убирал до этого состояния - но всеравно не фильтрует. Помогает убрать def list()
class WishlistsViewSet(viewsets.ModelViewSet):
   queryset = Wishlist.objects.all()
   serializer_class = WishlistModelSerializer
   permission_classes = [IsAuthenticated]

   def filter_queryset(self, queryset):
       queryset = super().filter_queryset(queryset)
       queryset = queryset.filter(utilizator_id=self.request.user.id)
       return queryset

   def list(self, request, *args, **kwargs):
       return Response(self.serializer_class(self.queryset, many=True).data)
Попробуй убери гет кверисет свой и проверь
источник

NS

Nik S in Django [ru] #STAY HOME
Nikolay Cherniy
Скорее всего не прописан логаут рестовский
а куда он мог пропасть, если работало?
path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),

urlpatterns = [
   path('login/', views.LoginView.as_view(template_name='rest_framework/login.html'), name='login'),
   path('logout/', views.LogoutView.as_view(), name='logout'),
]
Оно по пути проходит, но ничего не делает.
источник

NS

Nik S in Django [ru] #STAY HOME
Nikolay Cherniy
Попробуй убери гет кверисет свой и проверь
я проверял.
и перепроверил.
надо и get_queryset убрать(и вовсе просто так не использовать)) и def list)
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Nik S
а куда он мог пропасть, если работало?
path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),

urlpatterns = [
   path('login/', views.LoginView.as_view(template_name='rest_framework/login.html'), name='login'),
   path('logout/', views.LogoutView.as_view(), name='logout'),
]
Оно по пути проходит, но ничего не делает.
Если не ошибаюсь там в сеттингах нужно логоут урл для реста указать
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Nik S
я проверял.
и перепроверил.
надо и get_queryset убрать(и вовсе просто так не использовать)) и def list)
Ну это же хорошо, зачем писать лишний код если и так работает)
источник

NS

Nik S in Django [ru] #STAY HOME
Nikolay Cherniy
def filter_queryset(self, queryset):
queryset = super().filter_queryset(queryset)
queryset = queryset.filter(тут твоя логика фильтрации)
return queryset
это приводит к некоторому багу, что будучи авторизованным, при использовании api
http://127.0.0.1:8000/wishlist/100/
переход по пути выдает not found, к чему могут придраться)
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Nik S
это приводит к некоторому багу, что будучи авторизованным, при использовании api
http://127.0.0.1:8000/wishlist/100/
переход по пути выдает not found, к чему могут придраться)
Как там может быть нот фаунд? Там пустой список будет
источник

NS

Nik S in Django [ru] #STAY HOME
Nikolay Cherniy
Как там может быть нот фаунд? Там пустой список будет
GET /wishlist/100/
HTTP 404 Not Found
Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
   "detail": "Not found."
}
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Nik S
GET /wishlist/100/
HTTP 404 Not Found
Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
   "detail": "Not found."
}
Так это уже не лист
источник

NS

Nik S in Django [ru] #STAY HOME
Nikolay Cherniy
Так это уже не лист
но оно же все взаимосвязано лист с retrive и базируется на фильтрованном кверисете
источник