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."""