0

I am trying to post multiple values from different models in a for loop in a template. It is not doing what I am planning. I want to display a count of LeadActions that belong to Leads in a table. I did comment the part out that is not working as well. The table should display the list of Leads and the the count of how many overdue actions(LeadActions) there are for that specific lead.

My View

class LeadListView(LoginRequiredMixin, generic.ListView):
    login_url = '/scrty/login/'
    template_name = "nodiso/leadslist.html"
    model = models.Leads
    def get_context_data(self, **kwargs):
        ctx = super(LeadListView, self).get_context_data(**kwargs)
        ctx['actions']= models.LeadActions.objects.all()
        return ctx
    def get_queryset(self):
        return models.Leads.objects.filter(company=self.request.session['compid'],archive=False)

My template

<table class="table">

      <thead>
        <th>Name</th>
        <th>Overdue Tasks</th>
        <th>Total Tasks</th>
      </thead>
      {% for lead in leads_list %}
      {# {% for action in action_list %}#}

      <tr>
        <td><a href="{% url 'nodiso:leaddetail' lead.id %}">{{lead.name}}</a></td>
        <td><span class="badge">{{ actions.name|length }}</span></td>
        <td><span class="badge">42</span></td>
      </tr>

        {# {% endfor %}#}
        {% endfor %}
      </table>

The Models

class LeadActions(models.Model):
    lead = models.ForeignKey(Leads)
    name = models.CharField(max_length=265)
    crdate = models.DateField(auto_now_add=True)
    Duedate = models.DateField()
    creator = models.CharField(max_length=265)
    overdue = models.IntegerField(null=True,blank=True)

    def __str__(self):
        return self.name
class Leads(models.Model):
    company = models.ManyToManyField(Company)
    user = models.ManyToManyField(settings.AUTH_USER_MODEL)
    name = models.CharField(max_length=265)
    email = models.EmailField(max_length=265)
    tel = models.IntegerField()
    archive = models.BooleanField(default=False)
    dateenq = models.DateField(auto_now_add=True,null=True)

    def get_absolute_url(self):
        return reverse('nodisoapp:leadlist')
    def __str__(self):
        return self.name

1 Answer 1

1

You shouldn't be sending the list of actions from the view. Instead, in the template, you can access {{ lead.leadactions_set.count }} to give the count of LeadActions related to each Lead in the loop.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks, if I would like other values like the overdue count, how would i then query that

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.