У меня есть эта модель
продуктов
class Product(models.Model):
name = models.CharField(max_length=50)
productId = models.AutoField(max_length=50,primary_key=True)
productType = models.CharField(max_length=50)
productPrice = models.PositiveIntegerField(default=0)
matType = models.CharField(max_length=100,default='Use comma , to seperate multiple materials Ex. Cotton 90%, Spandex 10%') #Multiple Material divided by comma,mat1 is main material
seller = models.ForeignKey(User, related_name='sellers',on_delete=models.CASCADE,default='NA')
cat_1 = models.ForeignKey(Cat1,related_name='catlevel1',on_delete=models.CASCADE,default='NA')
У меня есть два иностранных ключа, один для Класс пользователя для информации о продавцеа другой - Категории с названием модели Cat1 .Для этого же у меня есть родственные имена catlevel1 и продавцы .Я использую этот код в HTML для доступа к продуктам, зарегистрированным в данный момент пользователем.
{% for prod in user.sellers.all %}
{% for color in prod.colors.all %}
{% for size in prod.sizes.all %}
<tr>
<td>{{ prod.name }}</td>
<td>{{ prod.productPrice }}</td>
<td>{{ prod.matType }}</td>
<td>{{ color.colorMain }},{{ color.colorTrim }}</td>
<td>{{ size.nameSize }}</td>
<td>{{ size.quantity }}</td>
</tr>
{% endfor %}
{% endfor %}
{% endfor %}
Первый цикл (первая строка):
{% for prod in user.sellers.all %}
осуществляет доступ ко всемпродукты по current_user user
.Здесь sellers
является связанным именем внешнего ключа seller
Я хочу получить данные, используя оба внешних ключа, seller
в User
Class и categories
в cat1
.
Таким образом, основная цель - получить продукты текущего пользователя и текущей категории. Я искал в Интернете, но не смог найти никакого решения.Многие из решений датируются Django 1,3 дня и не работают в настоящее время.
Некоторые из них предлагают использовать select_related
, но я не мог понять, как его использовать здесь.
ОБНОВЛЕНИЕ: Используемые модели:
class Cat1(models.Model):
name = models.CharField(max_length=30)
description = models.CharField(max_length = 100)
def __str__(self):
return self.name
class Product(models.Model):
name = models.CharField(max_length=50)
productId = models.AutoField(max_length=50,primary_key=True)
productType = models.CharField(max_length=50)
productPrice = models.PositiveIntegerField(default=0)
matType = models.CharField(max_length=100,default='Use comma , to seperate multiple materials Ex. Cotton 90%, Spandex 10%') #Multiple Material divided by comma,mat1 is main material
seller = models.ForeignKey(User, related_name='sellers',on_delete=models.CASCADE,default='NA')
cat_1 = models.ForeignKey(Cat1,related_name='catlevel1',on_delete=models.CASCADE,default='NA')
Вид используется:
def cat_products(request,pk):
categories = get_object_or_404(Cat1, pk=pk)
colors = Color.objects.all()
products = Product.objects.all()
sizes = Size.objects.all()
sellerproducts = user.sellers.select_related('cat_1')filter(cat_1__categories=category)
user = request.user
return render(request, 'products.html', {'categories':categories,'products':products,'colors':colors,'sizes':sizes,'user':user,'sellerproducts':sellerproducts})
Вот как я использую: user.sellers.select_related ('cat_1') filter (cat_1__categories)= категория) Я знаю, что мне нужно настроить имена переменных, но ошибка неверного синтаксиса.