比较Django中的两个表

问题描述 投票:2回答:2

[如下所示,我正在我的模板中显示Table1中的数据,最近我创建了另一个名为Table2的模型,其中包含我也想在表中显示的数据。

我需要检查表2中是否存在表1中的code,如果存在,请从表2中获取var1var2并将其显示在我的模板中。

有人知道如何最好地做到这一点吗?

伪代码

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

我的模板

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

我的看法

def home(request):

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

我的模型.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
django django-models django-views django-templates
2个回答
0
投票

views.pydef主页(要求):

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

模板

{% 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 %}

0
投票

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%}

© www.soinside.com 2019 - 2024. All rights reserved.