Помогите понять условие задачи!?

Vadim

Новичок
Пользователь
Окт 12, 2020
3
0
1
Решение не обязательно! как мне сделать массив для вход данных и что они вообще хотят на выходе получить?


В примере кода продолжите функцию live_search() на Python таким образом, чтобы она возвращала список товаров (список объектов Product упакованные в JSON в произвольном формате) которые содержат строку q в полях sku, name или description в любом регистре символов.
from django.db import models

class Product(models.Model):
categories = models.ManyToManyField(Category,
related_name='products',
blank=True, verbose_name=u"категории")
related_products = models.ManyToManyField('Product',
blank=True,
verbose_name="связанные продукты")
sku = models.CharField(u'артикул', max_length=128, validators=[validators.check_bad_symbols], unique=True)
price = models.DecimalField(u'цена', max_digits=12, decimal_places=4)
slug = models.SlugField(u'slug', max_length=80, db_index=True, unique=True)
name = models.CharField(u'название', max_length=128)
title = models.CharField(u'заголовок страницы (<title>)', max_length=256, blank=True)
description = models.TextField(u'описание', blank=True)
def live_search(request, template_name="shop/livesearch_results.html"):
q = request.GET.get("q", "")
# ...
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
у меня нет базы из Джанго
В джанго по умолчанию используется sqlite3 она у вас точно есть, модель Product тоже есть. Вы можете сделать миграции (чтобы таблица для Product появилась в базе), потом наполнить базу произвольными (тестовыми) данными (хотя бы через django shell) и на них поэкспериментировать.
В примере кода продолжите функцию live_search()
на Python таким образом, чтобы она возвращала список товаров (список объектов Product упакованные в JSON в произвольном формате) которые содержат строку q в полях sku, name или description в любом регистре символов
Тут немного не понятно что нужно сделать: просто вернуть queryset в JSON или передать queryset в шаблон, так как в функцию передается аргумент template_name.
Если просто вывести JSON, то примерно так:
Python:
from django.db.models import Q
from django.core import serializers
from django.htttp import JsonResponse


def live_search(request, template_name="shop/livesearch_results.html"):
    q = request.GET.get("q", "")
    data = Product.objects.filter(Q(sku__icontains=q) | Q(name__icontains=q) | Q(description__icontains=q))
    data = serializers.serialize('json', data)

    return JsonResponse({'data': data})
если в вывести JSON в шаблон, то так:
Python:
from django.db.models import Q
from django.shortcuts import render
from django.core import serializers


def live_search(request, template_name="shop/livesearch_results.html"):
    q = request.GET.get("q", "")
    data = Product.objects.filter(Q(sku__icontains=q) | Q(name__icontains=q) | Q(description__icontains=q))
    data = serializers.serialize('json', data)
   
    return render(request, template_name, {'data': data})
 
Последнее редактирование:
  • Мне нравится
Реакции: Vadim и Student

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
как мне сделать массив для вход данных
Вам нужен queryset из объектов Product, отфильтрованных по вхождению значения переменной q в поле sku, name или description.
Вот примерный код:
Python:
from django.db.models import Q

data = Product.objects.filter(Q(sku__icontains=q) |  Q(name__icontains=q) | Q(description__icontains=q))
 
Последнее редактирование:
  • Мне нравится
Реакции: Vadim

Vadim

Новичок
Пользователь
Окт 12, 2020
3
0
1
да видимо зря я так вопрос задал сорри, я сначала думал сделать массив данных и экспериментировать. у меня нет базы из Джанго. тогда может на сам вопрос тоже ответите?
В примере кода продолжите функцию live_search()
на Python таким образом, чтобы она возвращала список товаров (список объектов Product упакованные в JSON в произвольном формате) которые содержат строку q в полях sku, name или description в любом регистре символов.
Спасибо если сможете помочь
 

Vadim

Новичок
Пользователь
Окт 12, 2020
3
0
1
Спасибо огромное всем за ответы !!!(y)(y)(y)
 

Форум IT Специалистов