django count of foreign key model

Ivan Semochkin

Hi i want to display a count of answers to my question model

my model:

class Question(models.Model):

    text = models.TextField()
    title = models.CharField(max_length=200)
    date = models.DateTimeField(default=datetime.datetime.now)
    author = models.ForeignKey(CustomUser)
    tags = models.ManyToManyField(Tags)

    def __str__(self):
        return self.title


class Answer(models.Model):

    text = models.TextField()
    date = models.DateTimeField(default=datetime.datetime.now)
    likes = models.IntegerField(default=0)
    author = models.ForeignKey(CustomUser)
    question = models.ForeignKey(Question)

my view:

def all_questions(request):

    questions = Question.objects.all()
    answers = Answer.objects.filter(question_id=questions).count()

    return render(request, 'all_questions.html', {
            'questions':questions, 'answers':answers })

Right now view displays count of all answers. How can i filter it by the Question model?

Rahul Gupta

You can use .annotate() to get the count of answers associated with each question.

from django.db.models import Count
questions = Question.objects.annotate(number_of_answers=Count('answer')) # annotate the queryset

By doing this, each question object will have an extra attribute number_of_answers having the value of number of answers associated to each question.

questions[0].number_of_answers # access the number of answers associated with a question using 'number_of_answers' attribute

Final Code:

from django.db.models import Count

def all_questions(request):
    questions = Question.objects.annotate(number_of_answers=Count('answer'))
    return render(request, 'all_questions.html', {
            'questions':questions})

In your template, then you can do something like:

{% for question in questions %}
    {{question.number_of_answers}} # displays the number of answers associated with this question

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Django Model Property - Count foreign key for multiple instances of model

From Dev

Count foreign key in django

From Dev

Correct way to count for a foreign key model in Django template

From Dev

Correct way to count for a foreign key model in Django template

From Dev

Django foreign key count queries

From Dev

Saving a model with a foreign key in django

From Dev

Django Multiple Foreign Key Model

From Dev

Saving a model with a foreign key in django

From Dev

Django creating model with foreign key

From Dev

Django Query: Group/Count orders by foreign key of foreign key?

From Dev

Django foreign key reverse set count

From Dev

django intermediate model with no foreign key error

From Java

How to add condition on Django model foreign key?

From Dev

Django admin limit model from foreign key

From Dev

Django model instance from foreign key

From Dev

Django model single instance per foreign key

From Dev

django user model foreign key to company

From Dev

Django get all foreign key names of a model

From Dev

Django - Adding a foreign key representing a user to a model

From Dev

Django model one foreign key to many tables

From Dev

Django different model manager on foreign key

From Dev

Django Introduce a foreign key from a model CharField

From Dev

django user model foreign key to company

From Dev

Django model foreign key from existing table

From Dev

Django Introduce a foreign key from a model CharField

From Dev

django intermediate model with no foreign key error

From Dev

Django model has no foreign key object set

From Dev

Add a conditional foreign key field in a DJANGO model

From Dev

django upload to image model with foreign key to user

Related Related

HotTag

Archive