Add in_favorites into models

This commit is contained in:
evgeniy-st 2019-09-19 18:18:19 +03:00
parent b23a79775d
commit 2cb4d22a94

View File

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