From dbd347d71e5f68f1d71f1672a4bbad7c49048954 Mon Sep 17 00:00:00 2001 From: Alexandr Karpov Date: Fri, 21 Oct 2022 22:36:36 +0300 Subject: [PATCH] updated search --- app/search/models.py | 28 +++++++++++++++++++++------- app/search/services/search.py | 7 +++++-- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/app/search/models.py b/app/search/models.py index d04560e..e8efe1f 100644 --- a/app/search/models.py +++ b/app/search/models.py @@ -1,13 +1,12 @@ from django.db import models -# Create your models here. - class Category(models.Model): name = models.CharField("Имя", unique=True, blank=False, max_length=250) + value = models.CharField("Имя", unique=True, blank=False, max_length=250) def __str__(self): - return self.name + return str(self.name) class Meta: db_table = "Category" @@ -18,13 +17,28 @@ class Product(models.Model): "ID CTE", primary_key=True, unique=True, blank=False, null=False, db_index=True ) name = models.CharField("Название CTE", unique=True, blank=False, max_length=250) - category = models.ForeignKey( - Category, related_name="products", on_delete=models.CASCADE - ) characteristic = models.JSONField("Характеристики") def __str__(self): - return self.name + return str(self.name) + + def serialize_self(self) -> dict: + return { + 'name': self.name, + 'characteristic': self.characteristic, + } class Meta: db_table = "Product" + + +class ProductInCategory(models.Model): + product = models.ForeignKey( + Product, related_name="categories", on_delete=models.CASCADE + ) + category = models.ForeignKey( + Category, related_name="products", on_delete=models.CASCADE + ) + + def __str__(self): + return f"{self.product} in {self.category}" diff --git a/app/search/services/search.py b/app/search/services/search.py index 03152b0..f8dc801 100644 --- a/app/search/services/search.py +++ b/app/search/services/search.py @@ -1,2 +1,5 @@ -def process_string(text: str) -> dict: - return {} +from search.models import Product + + +def process_string(text: str) -> [dict]: + return [x.serialize_self() for x in Product.objects.filter(name__contains=text)[5:]]