How to get two models data in for loop with filter: Django

Viewed 37

I do have two model as below, like patient details model and patient visit model. I want to list the visits of all patients (if exist). in views.py I am passing both models data by get all. how to filter and show it in the template by using for loop. I am using two for loop it shows total number of patient multiply total number of visit which is wrong..

class patientprofile(models.Model):

pat_Fname = models.CharField(max_length=100)
pat_Lname = models.CharField(max_length=100, blank=True)
def IntegerField(self):
    return self.id



class visits(models.Model):
pat_ID = models.ForeignKey(patientprofile, on_delete=models.CASCADE)
visit_date = models.DateField(blank=False, null=False)
visit_time = models.TimeField(blank=False, null=False)

views.py

@login_requireddef visitslist(request):
patpro=patientprofile.objects.all()
vis=visits.objects.all()
return render(request, 'pmp/visitslist.html', {'vis':vis, 'patpro':patpro})

Template as below

{% for a in vis %}              
                                               
                                            <tr>
                                                <td>
                                                    {{ a.visit_time }}
                                                </td>
                                                <td>{{ a.visit_date }}</td>
                                                <td>{{ patpro.id }}</td>
                                                <td>{{ patpro.pat_Fname }}</td>

                                                </td>
                                            </tr>
                                            {% endfor %}
                                        
1 Answers

You can easily transform it into a dict object using values() function in queryset object. for example:

merged_tables_dict = visits.objects.values('visit_date', 'visit_time', 'pat_ID__pat_Fname', 'pat_ID__pat_Lname')

That will return a list of objects with all data in values params

You can read more about it Django Docs values

Related