From 2cb4d22a9477d6ad562aded4c9065528cfd191e6 Mon Sep 17 00:00:00 2001 From: evgeniy-st Date: Thu, 19 Sep 2019 18:18:19 +0300 Subject: [PATCH] Add in_favorites into models --- apps/recipe/models.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/apps/recipe/models.py b/apps/recipe/models.py index e799e588..6df7adc2 100644 --- a/apps/recipe/models.py +++ b/apps/recipe/models.py @@ -13,6 +13,20 @@ class RecipeQuerySet(models.QuerySet): return self.filter(state__in=[self.model.PUBLISHED, self.model.PUBLISHED_EXCLUSIVE]) + def annotate_in_favorites(self, user): + """Annotate flag in_favorites""" + favorite_establishments = [] + if user.is_authenticated: + favorite_establishments = user.favorites.by_content_type(app_label='recipe', + model='recipe') \ + .values_list('object_id', flat=True) + return self.annotate(in_favorites=models.Case( + models.When( + id__in=favorite_establishments, + then=True), + default=False, + output_field=models.BooleanField(default=False))) + class Recipe(TranslatedFieldsMixin, ImageMixin, BaseAttributes): """Recipe model."""