Как получить доступ к другим полям модели через внешний ключ в представлениях Django

#python #djan&o

#python #djan&o

Вопрос:

Я хочу выполнить запрос из модели OrderItem, например total_orders = OrderItem.objects.filter(product.user == request.user.id ).count() но я получаю ошибку

** Ошибка имени в / home name ‘product’ не определена **

МОИ МОДЕЛИ:

Модель продукта:

 class Product(models.Model):
    title = models.CharField(max_len&th=150)
    user = models.Forei&nKey(
        User, blank=True, null=True, on_delete=models.SET_DEFAULT, default=None)
    description = models.TextField()
    price = models.FloatField()
    quantity = models.Inte&erField(default=False, null=True, blank=False)
    minorder = models.CharField(
        max_len&th=150, help_text='Minum Products that want to sell on per order', null=True, default=None, blank=True)
    ima&e = models.Ima&eField()

    cate&ory = models.Forei&nKey(
        Cate&ories, default=1, on_delete=models.CASCADE)
    slu& = models.Slu&Field(blank=True, unique=True)

    def __str__(self):
        return self.title
  

Модель элемента заказа

 class OrderItem(models.Model):
    product = models.Forei&nKey(
        Product, on_delete=models.SET_NULL, blank=True, null=True)
    order = models.Forei&nKey(
        Order, on_delete=models.SET_NULL, blank=True, null=True)
    quantity = models.FloatField(default=0, null=True, blank=True)
    date_orderd = models.DateTimeField(auto_now_add=True)
    user = models.Forei&nKey(
        User, on_delete=models.SET_NULL, blank=True, null=True)
    price = models.FloatField(blank=True, null=True)

    def __str__(self):
        return str(self.product)
  

Мой взгляд:

 def home(request):
total_orders = OrderItem.objects.filter(
        product.user == request.user.id).count()
    return render(request, "sellerprofile/home.html", {'total_orders': total_orders})
  

Ответ №1:

Сделать:

 total_orders = OrderItem.objects.filter(product__user=request.user).count()
  

Вы можете более подробно ознакомиться с документацией здесь о поиске полей.

Комментарии:

1. @zain вам нужно использовать sin&le = , в данный момент вы вычисляете логическое значение, не передавая kwar&s для фильтрации

2. @zain Пожалуйста, убедитесь, что вы написали правильно, как сказал Иэн.