How to filter using foreign key and render on HTML

16 views
Skip to first unread message

Isaac Ndutumo

unread,
Sep 6, 2019, 8:45:19 AM9/6/19
to Django users
Am developing a web app where i want to view per client details 

view.py 
class DirectorListView(ListView):
    model = Director
    paginate_by = 10

    def get_queryset(self):
        query = self.request.GET.get('q')
        if query:
            search = Director.objects.filter(first_name__icontains=query)
            return search
        else:
            return Director.objects.order_by('first_name')

model.py

class  Client(models.Model):
name = models.CharField(max_length=200)
registration_number = models.CharField(max_length=200)
vat_number = models.CharField(max_length=200,null=True,blank=True)
ownership = models.CharField(max_length=200,choices=choices,default='Private')
year = models.CharField(max_length=200)
number_year = models.IntegerField(null=True,blank=True)
country = models.CharField(max_length=200)
sector = models.ForeignKey(Sector,related_name='client',on_delete=models.SET_NULL,null=True)
location = models.CharField(max_length=200)
postal_address = models.CharField(max_length=200)
email = models.EmailField()
website = models.CharField(max_length=200,null=True)
mobile_number = models.CharField(max_length=200)
contact_person = models.CharField(max_length=200)
contact_number = models.CharField(max_length=200)
date_time = models.DateField(default=timezone.now)
registration_certificate = models.FileField(upload_to='certificate/%Y/%m/%d/',null=True,blank=True)
vat_certificate = models.FileField(upload_to='vat/%Y/%m/%d/',null=True,blank=True)

def __str__(self):
return self.name

class Director(models.Model):
client = models.ForeignKey(Client, related_name='director',on_delete=models.SET_NULL,null=True)
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
phone_number = models.CharField(max_length=200)
email = models.EmailField()
id_number = models.CharField(max_length=200,null=True,blank=True)
postal_address = models.CharField(max_length=200,null=True,blank=True)
position = models.CharField(max_length=200,null=True,blank=True)
kra = models.FileField(upload_to='kra/%Y/%m/%d/',null=True,blank=True)
national_id = models.FileField(upload_to='ids/%Y/%m/%d/',null=True,blank=True)


def __str__(self):
return "{}  {}".format(self.first_name, self.last_name)

client_detail.html

{% extends 'base.html' %}
{% block content %}
{% load humanize %}

<div class="row">
<div class="col-sm-4">
     <table class="table table-bordered" width="100%" cellspacing="0">
            <tr> <th style="color: blue;">Name</th> <td style="color: black;">{{ client.name }} </td> </tr>
            <tr> <th style="color: blue;">Year of operation</th> <td style="color: black;">{{client.number_year}}</td> </tr>
    </table>
</div>

<div class="col-sm-4">

     <table  class="table table-bordered" width="100%" cellspacing="0">
            <tr> <th style="color: blue;">Company No</th> <td style="color: black;">{{client.registration_number}}</td> </tr>
            <tr> <th style="color: blue;">Email</th> <td style="color: black;">{{client.email}}</td> </tr>
    </table>
</div>
<div class="col-sm-4">

     <table  class="table table-bordered" width="100%" cellspacing="0">
            <tr> <th style="color: blue;">Documents</th> <td> <a href="{{client.vat_certificate.url}}" > VAT </a> <a href="{{client.registration_certificate.url}}" > Registration Certificate </a></td> </tr>
            <tr> <th style="color: blue;">Country</th> <td style="color: black;">{{client.country}}</td> </tr>
    </table>
</div>
</div>

<div class="row" >
    <div class="col-sm-9">

<div class="card-body">
    <div class="row">
        <div class="col-sm-2">
          <a class="btn btn-default buttonsAlign" href="{% url 'assest_list' %}"><span style="color: black;font-weight:bold;">ASSESTS</span></a>
        </div>
        <div class="col-sm-2">
              <a class="btn btn-default buttonsAlign" href="{% url 'bankstatement_list' %}"><span style="color: black;font-weight:bold;">BANK STATEMENT</span></a>
        </div>
        <div class="col-sm-2">
              <a class="btn btn-default buttonsAlign" href="{% url 'offtaker_list' %}"><span style="color: black;font-weight:bold;"> OFF-TAKERS </span></a>
        </div>
        <div class="col-sm-2">
               <a class="btn btn-default buttonsAlign" href="{% url 'director_list' %}"><span style="color: black;font-weight:bold;"> DIRECTORS </span></a>
        </div>
    </div>
</div>

<div class="card shadow mb-4">
    <div class="card-body">
        <div class="table-responsive">
     <table class="table table-bordered" width="100%" cellspacing="0">
        <thead>
            <tr>    
                <th >Turnover</th>   
                <th>Expenses </th> 
                <th>Income</th>    
                <th>Currency</th>
                <th>Year</th>
                <th>Employees</th>
            </tr>
        </thead>
 {% for financial in client.financial.all %}
        <tbody>
            <tr>     
                <td>{{ financial.turnover|intcomma}}</td>  
                <td>{{financial.expenses|intcomma}}</td>  
                <td>{{ financial.income|intcomma }}</td>
                <td>{{financial.currency}}</td>
                <td>{{financial.year}}</td>
                <td>{{financial.number_employees}}</td>
            </tr>
        </tbody>
    {% endfor %}
    </table>
</div>
</div>
</div>
</div>
<div class="col-sm-3">
    <div class="card shadow mb-4">
    <div class="card-body">
    <div class="panel-default">
        <a class="btn btn-info buttonsAlign" href="{% url 'add_client_financial' pk=client.pk %}"><span>Add Financials </span></a>
        <a class="btn btn-info buttonsAlign" href="{% url 'add_client_assest' pk=client.pk %}"><span>Add Assets</span></a>
        <a class="btn btn-info buttonsAlign" href="{% url 'add_client_directors' pk=client.pk %}"><span>Add Directors </span></a>
        <a class="btn btn-info buttonsAlign" href="{% url 'add_client_bankstatement' pk=client.pk %}"><span>Add Bank Statements</span></a>
        <a class="btn btn-info buttonsAlign" href="{% url 'add_client_offtakerprifile' pk=client.pk %}"><span>Add Off-Takers</span></a>
         
        
         
    </div>
</div>
</div>
</div>
</div>



{% endblock %}



When i click on DIRECTORS it displays all directors of all the clients i have, how can filter based on client pk?


Reply all
Reply to author
Forward
0 new messages