Как узнать, присутствует ли значение в списке в шаблоне django. попытался использовать оператор IN, но он не работает - PullRequest
1 голос
/ 16 февраля 2020

Я пытаюсь включить кнопку динамически, но оператор IN на моем html не работает. Я также пытался преобразовать все в строку, но это все равно не сработало.

Models.py

class Product(models.Model):
    name=models.CharField(max_length=100)
    image=models.ImageField(default='default.jpg',upload_to='productimages')
    description=models.TextField()
    category=models.CharField(max_length=100)
    price=models.FloatField()

    def __str__(self):
        return f'{self.name}'

class Cart(models.Model):
    cart2user= models.ForeignKey(User, on_delete=models.CASCADE)
    cart2product=models.ForeignKey(Product, on_delete=models.CASCADE)
    quantity=models.IntegerField(default=1)

views.py

def home(request):
    productobj=Product.objects.all()
    cartobj=Cart.objects.filter(cart2user=request.user)
    cartobjlist=[x.cart2product for x in cartobj]
    print(cartobjlist)
    return render(request,'home.html',{'productobj':productobj,'cartobjlist':'cartobjlist'})

дома. html

 {% for pobj in productobj%}
       <div class="col-xl-3 eachproduct">
        <form action="{%url 'home'%}" method="GET">
          {% csrf_token%}
            <img src="{{pobj.image.url}}" height="300px" width="100%"> 
            <h3 class="name" name="{{pobj}}" value={{pobj}}>{{pobj.id}}</h3> 
            <h3 class="price" name="price" value={{pobj.price}}>${{pobj.price}}</h3> 
            {% if pobj in cartobjlist %}      
              <a href="{% url 'cart'%}" class="btn buttoncart">Go to cart</a>
            {% else %}
              <a href="addtocart/{{pobj.id}}" class="btn buttoncart">Add to cart</a>
            {%endif%}
        </form>
       </div>
       {%endfor%}

1 Ответ

0 голосов
/ 16 февраля 2020

Вы не передали список шаблону, вы передали строку с именем 'cartobjlist' в шаблон. На самом деле:

{'productobj':productobj,'cartobjlist':<s>'cartobjlist'</s>})

При этом я настоятельно советую вам выбирать продукты более эффективно и, кроме того, использовать набор для более быстрого поиска, например:

def home(request):
    productobj = Product.objects.all()
    cartobjlist = <b>set(Product.objects.filter(cart__cart2user=request.user))</b>
    return render(
        request,
        'home.html',
        {'productobj':productobj,'cartobjlist':<b>cartobjlist</b>}
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...