Получить значение в querytset на основе значения внешнего ключа django - PullRequest
0 голосов
/ 05 мая 2020

У меня есть набор запросов, в котором я получаю все подобные продукты

products=Products.objects.all()

и другую таблицу списка желаний

class Wishlist(models.Model):
    product = models.ForeignKey(Products, on_delete=models.CASCADE)
    isFavourite=models.BooleanField(default=True)
    customer = models.ForeignKey(Customer ,on_delete=models.CASCADE , null=True)

Теперь я хочу получить значение списка желаний в каждом продукте в виде True или False. Например, в продукте 1 покупатель 1 имеет истинное или ложное значение этого продукта или нет.

1 Ответ

1 голос
/ 05 мая 2020

вы можете добавить related_name в поле клиента в списке желаний следующим образом:

class Wishlist(models.Model):
    product = models.ForeignKey(Products, on_delete=models.CASCADE)
    isFavourite=models.BooleanField(default=True)
    customer = models.ForeignKey(Customer ,on_delete=models.CASCADE , null=True, related_name="wishlists")

вы можете добавить в контекст вашего шаблона что-то вроде этого:

context = {
    "products": Product.objects.all(),
    "favourites_products_ids": list(customer.wishlist.filter(isFavourite=True).values_list("product__id", flat=True))
}

Затем в шаблоне вы можете сделать что-то вроде этого:

{% for product in products %}
    {% if product.id in favourites_products_ids %}
        is favourite
    {% else %}
        is not favourite
    {% endif %}

{% endfor %}

я предполагал, что вы показываете это в шаблоне django или, если вы используете DRF, вы можете сделать то же самое в сериализаторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...