Home > database >  Django query data from child to parent model
Django query data from child to parent model

Time:01-16

I am creating an app where I want to show all the list of members of a certain committee in my template, but also I want to show the status of whether they have paid that month or not. Now I am quite confused as there is no linkage of my Member table to Payment detail. I can get the list of people who paid from the payment detail table but I want is to show all the list from members and then show status next to them.

class Members(models.Model ):
    user = models.ForeignKey(Users,verbose_name='User Id', on_delete=models.CASCADE)
    com = models.ForeignKey(Committees, on_delete=models.CASCADE,verbose_name='Committee Name')
    mem_status = models.CharField( max_length=20,choices=MEMBER_STATUS, verbose_name='Member Status')
    mem_note = models.TextField(null=True, blank=True)

class PaymentDetails(models.Model):
    mem = models.ForeignKey(Members,on_delete=models.CASCADE,verbose_name='Memeber Phone no')
    com = models.ForeignKey(Committees, on_delete=models.CASCADE,verbose_name='Committee Name')
    payment_month = models.DateField(default=datetime.now())
    payment_amount_debit = models.IntegerField(null=True,blank=True)
    payment_amount_credit = models.IntegerField(null=True,blank=True)
    payment_status = models.CharField(max_length=16, choices=PAYMENT_DETAILS_CHOICES)
 

CodePudding user response:

You can do reverse relationship as django automatically creates relation on the other side:

views.py:

def your_view(request):
  members = Members.objects.all().select_related()
  members_context = [member.paymentdetails_set.values("payment_month", "payment_status") for member in members]
  return render(request, 'your_template', {'members': members_context})

your_template_tag.py:

from django.template.defaulttags import register

@register.filter
def get_item(dictionary, key):
  return dictionary.get(key)

your_template.html:

{% for member in members %}
  <p> Payment Month: {{ member|get_item:"payment_month" }}</p>
  <p> Payment Status: {{ member|get_item:"payment_status" }}</p>
{% endfor %}
  •  Tags:  
  • Related