Django - get in template reverse related many to many field -
i have 3 models, entry model , category model, , have created intermediate model categoryentry.
class entry(models.model):     entry_text = models.textfield()     user = models.foreignkey(user)  class category(models.model):     user = models.foreignkey(user)     category_text = models.charfield(max_length=200)     entries = models.manytomanyfield(entry, through='categoryentry')  class categoryentry(models.model):     category = models.foreignkey(category)     entry = models.foreignkey(entry)     viewed = models.booleanfield(default=false) i have created view get_queryset method this
    def get_queryset(self):     order_by = self.request.get.get('order_by')      if not order_by:         order_by = '-pub_date'      return entry.objects.filter(category__id=self.kwargs.get('category_id', none), category__user__id=self.request.user.id).order_by(order_by)[:].select_related('user') i have category id kwargs. problem - how every entries related field "viewed", can show value in template. example related user field can like
{% entry in entries %}     {{ entry.entry_text }}     {{ entry.user.name }} {% endfor %} what need access "viewed" field "entry.categoryentry.viewed"
tried prefetch_related, doesn't seem work or don't how know right name access field in template
entry.objects.filter(category__id=self.kwargs.get('category_id', none), category__user__id=self.request.user.id).order_by(order_by)[:].select_related('user').prefetch_related(prefetch("categoryentry_set", queryset=categoryentry.objects.filter(category__id=self.kwargs.get('category_id', none)))) thanks!
you do:
{% entry in entries %}     {{ entry.entry_text }}     {{ entry.user.name }}     {% ce in entry.catalogentry_set.all %}         {{ce.category.category_text}}          {# or whatever.. #}     {% endif %} {% endfor %} basically, if no related_name present, access reverse lookup element lowercase model name + _set - returns queryset manager object. 
Comments
Post a Comment