Попытка отфильтровать все объекты productimg MainProduct, но получить ValueError Cannot use QuerySet for "MainProduct": Use a QuerySet for "Product".
, но не может использовать слаг или идентификатор, чтобы отфильтровать его из продукта, потому что это домашняя страница
домашняя страница: просмотр [не работает]
#can't use slug here
def home(request):
mainproduct = MainProduct.objects.all()
productimg = ProductImage.objects.filter(
#wanna access all productimg objects of a single product i.e mainproduct
product=mainproduct
)
магазин:посмотреть [работает]
def detail_view(request, slug):
products = Product.objects.get(slug=slug)
productimg = ProductImage.objects.filter(product=products)
магазин: модель
class Product(models.Model):
name = models.CharField(max_length=150)
class ProductImage(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
image = models.ImageField(null=True, blank=True, upload_to='somewhere/')
дом: модель
class MainProduct(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
title = models.CharField(max_length=50)
@Willem Van Onsemit содержит только один продукт, потому что у него есть лимит
@me_zoo: это не имеет значения: это все еще коллекция объектов.
@me_zee Вы должны получить один продукт в этой строке, сначала отправить его в URL-адресе, а если не можете передать слаг, отправьте его идентификатор или pk, затем получите доступ в представлении и отфильтруйте что-то вроде ProductImage.objects.filter(product=single_product)
.
@Willem Van Onsemit, если я запущу mainproduct.get, мне все равно нужно будет отфильтровать все остальные продукты чем-то, но я не думаю, что смогу, потому что это домашняя страница, так что мне делать?
@me_zee Вы должны изучить отношения модели, а также поиск полей и наборы запросов. См. наборы запросов, модели и поиск полей.
mainproduct
не является отдельным продуктом: это QuerySet
из всеMainProduct
s, даже если есть один MainProduct
. Если есть ровно один MainProduct
, вы запрашиваете .get(…)
[Django-doc]:
def home(request):
mainproduct = MainProduct.objects.get()
productimg = ProductImage.objects.filter(
product__mainproduct=mainproduct
)
Сэр Виллем, я по ошибке удалил свой голос за, на следующий день я снова проголосую за :), отзыв от меня произошел по ошибке, теперь мой лимит голосов на сегодня исчерпан.
mainproduct
не является единым продуктом: этоQuerySet
из всеMainProduct
s.