Compare two tables in Django

Viewed 743

I am displaying data from Table1 in my template as seen below, I recently created another model called Table2 which contains data which I would like to display in my table as well.

I need to check if the code in Table1 exists in Table2, and if so, grab the var1 and var2 from Table2 and display it in my template.

Does anyone know how to do this the best way?

Pseudocode

If `code` In Table1 Exists In Table2
Get var1, var2 From Table2

My template

{% for data in info %}
    <tr>
        <td>{{ data.created }}</td>
        <td>{{ data.publisher }}</td>
        <td>{{ data.person }}</td>
        <td>{{ data.code }}</td>
    </tr>
{% endfor %}

My view

def home(request):

    info = Table1.objects.all()[:20]
    return render(request, 'app/home.html', {'info':info})

My models.py

class Table1(models.Model):
    created = models.DateTimeField(default=None)
    publisher = models.CharField(max_length=50, default=None)
    person = models.CharField(max_length=50, default=None)
    code = models.CharField(max_length=25, default=None)

    class Meta:
        db_table = 'Table1'
        unique_together = (("publisher", "person", "code"),)
    def __str__(self):
        return self.created

class Table2(models.Model):
    code = models.CharField(max_length=30, default=None, null=True)
    url = models.CharField(max_length=100, default=None, null=True)
    var1 = models.CharField(max_length=50, default=None, null=True)
    var2 = models.CharField(max_length=50, default=None, null=True)

    def __str__(self):
        return self.code
2 Answers

views.py def home(request):

    info = Table1.objects.all()[:20]
    table_2 = Table2.objects.all()[:20]
    return render(request, 'app/home.html', {'info':info,'table_2':table_2})

template

{% for data in info %}
    <tr>
        <td>{{ data.created }}</td>
        <td>{{ data.publisher }}</td>
        <td>{{ data.person }}</td>
        <td>
          {% for table_2_data in table_2 %}
             {% if data.code == table_2_data.code %}
                 {{table_2_data.var1}} {{table_2_data.var2}}
             {% endif %}
          {% endfor %}
        </td>
    </tr>
{% endfor %}

def home(request):

info = Table1.objects.all()[:20]
filter_data = []
for x in info:
  if x.code != '':
  try:
        getVars = Table2.objects.filter(code = x.code)
        x.var1  = getVars.var1
        x.var2  = getVars.var2
        filter_data.append(x)
      except Exception:
        filter_data.append(X)   




return render(request, 'app/home.html', {'info':filter_data})




###html


{% for data in info %}
<tr>
    <td>{{ data.created }}</td>
    <td>{{ data.publisher }}</td>
    <td>{{ data.person }}</td>
    <td>{{ data.code }}</td>
    <td>{% if data.var1 ==  %} - {%else%} {{data.var1}} {% endif %}</td>
    <td>{% if data.var2 ==  %} - {%else%} {{data.var2}} {% endif %}</td>

</tr>

{% endfor %}

Related