Hi every one
i have 3 models as follow
good:
class Good(models.Model):
mainbranch = models.ForeignKey(
MainBranch, on_delete=models.CASCADE,
verbose_name='کد دسته اصلی', default=0
)
subbranch1 = models.ForeignKey(
SubBranch1, on_delete=models.CASCADE,
verbose_name='کد دسته فرعی 1', default=0
)
subbranch2 = models.ForeignKey(
SubBranch2, on_delete=models.CASCADE,
verbose_name='کد کالا', default=0
)
goodproperties = models.OneToOneField(
GoodProperties, on_delete=models.CASCADE,
verbose_name='مشخصات کالا', null=True, blank=True
)
goodspecifications = models.OneToOneField(
GoodSpecification, on_delete=models.CASCADE,
verbose_name='معرفی کالا', default=0, null=True, blank=True
)
name = models.CharField(verbose_name='نام کالا')
image = models.ImageField(upload_to='photos/%Y/%m/%d', null=True, blank=True, verbose_name='تصویر کالا')
quantity = models.PositiveIntegerField(default=0, verbose_name='تعداد موجود')
price = models.DecimalField(
decimal_places=0, max_digits=12, default=0,
verbose_name='قیمت کالا'
)
discount = models.SmallIntegerField(null=True, blank=True, verbose_name='میزان تخفیف')
seller = models.ManyToManyField('Seller', verbose_name='کد فروشنده')
@property # getting all comments related to a specific good
def get_comments(self):
goods_comment = self.comment.all()
return goods_comment
def __str__(self):
return self.name
comment:
class Comment(models.Model):
good = models.ForeignKey(Good, on_delete=models.CASCADE, verbose_name='کد کالا', related_name='comments')
customer = models.ForeignKey(CustomUser, on_delete=models.CASCADE, verbose_name='کد مشتری')
text = models.TextField(verbose_name='متن نظر', help_text='متن نظر را وارد کنید')
date = models.DateTimeField(auto_now=True, verbose_name='تاریخ ثبت رای')
def __str__(self):
return self.text
and vote:
class Vote(models.Model):
comment = models.ForeignKey(Comment, on_delete=models.CASCADE, null=True, blank=True,
related_name='comment_vote', verbose_name='نظر مربوطه')
customer = models.ForeignKey(CustomUser, on_delete=models.CASCADE, null=True, blank=True,
related_name='comment_user', verbose_name='کاربر نظر داده')
type = models.BooleanField(verbose_name='نوع نظر')
objects = models.Manager()
like_dislike_counts = LikeDislikeManager()
def __str__(self):
return '{0}--{1}'.format(self.comment, self.type)
i defined a custom manager to count all like and dislikes of each comment leaved for a certain product
class LikeDislikeManager(models.Manager):
def get_query_set(self):
comment_counts = Comment.objects.annotate(
like_count=Count('comment_vote', filter=Q(comment_vote__type=True)),
dislike_count=Count('comment_vote', filter=Q(comment_vote__type=False))
)
queryset = self.get_queryset()
queryset.prefetch_related(
Prefetch('comments', queryset=comment_counts)
)
return queryset
but in my template i wrote this piece of code and it won’t work
could anyone tell me where the problem is.
my template:
<p dir="ltr">
{% for obj in object.comments.comment_vote.like_dislike_count %}
{{obj.like_count}}رای
{% endfor %}
</p>