Django фильтрует модель по связанным с ней полям модели
у меня есть модель Product
с несколькими связанными моделями:
Currency
Category
Material
В представлении я фильтрую в соответствии с поисковым запросом
Как я могу получить result
с каждой связанной моделью данных.
views.py
:
def product_autocomplete(request):
query = request.POST.get("query")
if len(query) > 2:
products = Product.objects.filter(
Q(name__contains=query) |
Q(material__name__contains=query) |
Q(identifier__contains=query) |
Q(barcode__contains=query)
)
products = serializers.serialize("json", products)
result = {"result": products}
return JsonResponse(result)
models.py
:
class Product(models.Model):
name = models.CharField(max_length=30, unique=True)
stock_price = models.FloatField()
price = models.FloatField()
special = models.FloatField()
expire = models.DateField(null=True, blank=False)
category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True)
seller = models.ForeignKey(Seller, on_delete=models.SET_NULL, null=True)
material = models.ManyToManyField(Material)
quantity_type = models.ForeignKey(QuantityType, on_delete=models.SET_NULL, null=True)
quantity = models.FloatField()
extra_quantity = models.FloatField(null=True, default=0)
barcode = models.CharField(null=True, max_length=30, blank=False)
identifier = models.CharField(null=True, max_length=30, blank=False)
location = models.CharField(null=True, max_length=30, blank=False)
alert_if_lower_than = models.IntegerField(null=True)
image = models.CharField(max_length=100, blank=False, null=True)
def __str__(self):
return self.name
class Category(models.Model):
name = models.CharField(max_length=30, unique=True)
desc = models.CharField(max_length=300, null=True, blank=False)
def __str__(self):
return self.name
class Currency(models.Model):
name = models.CharField(max_length=30, unique=True)
value = models.FloatField()
rate = models.FloatField()
def __str__(self):
return self.name
class Material(models.Model):
name = models.CharField(max_length=30, unique=True)
desc = models.CharField(max_length=300, null=True, blank=False)
def __str__(self):
return self.name
пока результат возвращает только primary key
связанной модели.
как вернуть все поля модели с каждым товаром, возвращаемым из queryset