Size: a a a

Django [ru] #STAY HOME

2019 July 11

DT

Dan Tyan in Django [ru] #STAY HOME
Vlad
На cent os хостил кто Django проект ?
от ос зависит только актуальность версий софта
источник

DT

Dan Tyan in Django [ru] #STAY HOME
NIkita Gromov
Кто нибудь в DRF сериализовывал отфильтрованные FK?
что значит "сериализовывал отфильтрованные FK"?
источник

DT

Dan Tyan in Django [ru] #STAY HOME
5
источник

NP

Nastya Pulinets in Django [ru] #STAY HOME
''' <tbody>
               {% for i in post %}
                 <tr>
                   <td>{{i.description}}</td>
                   {% for l in post_2 %}
                     {% if i.article == l.article %}
                       <td>{{l.description}}</td>
                     {% endif %}
                   {% endfor %}
                 </tr>
               {% endfor %}
             </tbody>
'''

как сделать это без if, так как post и post_2 хранят более 3000 объектов каждый, и система начинает подвисать
источник

NG

NIkita Gromov in Django [ru] #STAY HOME
Dan Tyan
что значит "сериализовывал отфильтрованные FK"?
Делал что то такое, но что бы оно работало :)
self.get_serializer(self.queryset.filter(name__string__icontains=request.GET['name']), many=True)
источник

S

Spirit💎 in Django [ru] #STAY HOME
Vlad
На cent os хостил кто Django проект ?
Ты уже писал это в чате. Где вопрос?
источник

DT

Dan Tyan in Django [ru] #STAY HOME
NIkita Gromov
Делал что то такое, но что бы оно работало :)
self.get_serializer(self.queryset.filter(name__string__icontains=request.GET['name']), many=True)
и...
что не работает ?
источник

NG

NIkita Gromov in Django [ru] #STAY HOME
Dan Tyan
и...
что не работает ?
self.queryset.filter(name__string__icontains=request.GET['name']) # <-- тут FK отфильтрованы
Ну то есть если я напишу что то вроде
print(self.queryset.filter(name__string__icontains=request.GET['name']).values('id', 'name__string'))
Я получу:
<QuerySet [{'id': 1, 'name__string': 'Test1221'}]>

Но сам сериалайзер возвращает уже все FK, без фильтрации
{
   "id": 1,
   "views": 0,
   "name": [
       {
           "id": 46,
           "string": "Test1",
           "item": 1
       },
       {
           "id": 47,
           "string": "Test85",
           "item": 1
       },
       {
           "id": 48,
           "string": "Test64",
           "item": 1
       }
   ]
}
источник

DT

Dan Tyan in Django [ru] #STAY HOME
NIkita Gromov
self.queryset.filter(name__string__icontains=request.GET['name']) # <-- тут FK отфильтрованы
Ну то есть если я напишу что то вроде
print(self.queryset.filter(name__string__icontains=request.GET['name']).values('id', 'name__string'))
Я получу:
<QuerySet [{'id': 1, 'name__string': 'Test1221'}]>

Но сам сериалайзер возвращает уже все FK, без фильтрации
{
   "id": 1,
   "views": 0,
   "name": [
       {
           "id": 46,
           "string": "Test1",
           "item": 1
       },
       {
           "id": 47,
           "string": "Test85",
           "item": 1
       },
       {
           "id": 48,
           "string": "Test64",
           "item": 1
       }
   ]
}
сериализатор не получает данные
он только приводит данные к служебному виду
источник

DT

Dan Tyan in Django [ru] #STAY HOME
это значит что ты что то не то делаешь
источник

i

ilya in Django [ru] #STAY HOME
Nastya Pulinets
''' <tbody>
               {% for i in post %}
                 <tr>
                   <td>{{i.description}}</td>
                   {% for l in post_2 %}
                     {% if i.article == l.article %}
                       <td>{{l.description}}</td>
                     {% endif %}
                   {% endfor %}
                 </tr>
               {% endfor %}
             </tbody>
'''

как сделать это без if, так как post и post_2 хранят более 3000 объектов каждый, и система начинает подвисать
приготовить данные в нужном виде ещё до темплейта
источник

NP

Nastya Pulinets in Django [ru] #STAY HOME
ilya
приготовить данные в нужном виде ещё до темплейта
Как это можно сделать? Я не понимаю, мне во view это делать?
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Nastya Pulinets
Как это можно сделать? Я не понимаю, мне во view это делать?
ага
источник

NG

NIkita Gromov in Django [ru] #STAY HOME
Dan Tyan
это значит что ты что то не то делаешь
На самомом деле я делаю не так уж много

class GenreListView(generics.ListAPIView):
   serializer_class = GenreSerializer
   queryset = Genre.objects.all().prefetch_related('name').distinct()

   def get_queryset(self, *args, **kwargs):
       name = self.request.query_params.get('name', None)

       if name is not None:
           self.queryset = self.queryset.filter(name__string__icontains=name)

       return self.queryset
источник

DT

Dan Tyan in Django [ru] #STAY HOME
NIkita Gromov
На самомом деле я делаю не так уж много

class GenreListView(generics.ListAPIView):
   serializer_class = GenreSerializer
   queryset = Genre.objects.all().prefetch_related('name').distinct()

   def get_queryset(self, *args, **kwargs):
       name = self.request.query_params.get('name', None)

       if name is not None:
           self.queryset = self.queryset.filter(name__string__icontains=name)

       return self.queryset
а где код self.get_serializer
источник

NP

Nastya Pulinets in Django [ru] #STAY HOME
Dan Tyan
ага
Есть таблица, где выводятся объекты по определенному фильтру, и я не понимаю, как это сделать через view, натолкните
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Nastya Pulinets
Есть таблица, где выводятся объекты по определенному фильтру, и я не понимаю, как это сделать через view, натолкните
post и post_2 както связаны ?
источник

NP

Nastya Pulinets in Django [ru] #STAY HOME
Dan Tyan
post и post_2 както связаны ?
Нет, парсятся два сайта с товаром, и если на двух сайтах одинаковый товар есть, выводим описание с  первого и второго, то есть post и post_2
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Nastya Pulinets
Нет, парсятся два сайта с товаром, и если на двух сайтах одинаковый товар есть, выводим описание с  первого и второго, то есть post и post_2
я  могу предложить сделать через анотацию и subquery
источник

DT

Dan Tyan in Django [ru] #STAY HOME
это на вскидку
источник