Как спросить, если table1.id == table2.id внутри? - PullRequest
1 голос
/ 05 ноября 2019

Я хочу определить, являются ли table1.id_sitio и table2.id_sitio одинаковыми для выполнения A в шаблоне. Если нет, то B

Я думаю, что если предложение неверно ... Это моя первая попытка на Django, так что, возможно, я что-то упустил

Это то, что я пробовал, и мой код:

Models.py

class Comprobante(models.Model):
        id_sitio = models.ForeignKey('Sitio', models.DO_NOTHING, db_column='id_sitio', blank=True, null=True)

class Sitio(models.Model):
        id_sitio = models.IntegerField(primary_key=True)
        sitio = models.CharField(max_length=100, blank=True, null=True)

        def __str__(self):
            return self.sitio

Views.py

def topsitios(request):
    sitio = Sitio.objects.all()[0:100]
    comprobante = Comprobante.objects.all()[0:100]

    context = {'sitio': sitio, 'comprobante': comprobante}

    return render(request, "sitio_ptc/topsitios.html", context)

Template.html

{% block content %}

{% for s in sitio %}
<tr>
<th scope="row">  {{ forloop.counter }}</th>
<td> {{ s.sitio }} </td>

<td>
{% for c in comprobante %}
{% if s.id_sitio == c.id_sitio %}
comprobante ok
{% else %}
no payments
{% endif %}
{% endfor %}
</td> 

</tr> 
{% endfor %}
{% endblock %}

1 Ответ

0 голосов
/ 05 ноября 2019

id_sitio вашего Comprobante объекта - ForeignKey. Это означает, что c.id_sitio не является значением первичного ключа связанного объекта, это Sitio объект.

Вы можете проверить это с помощью:

{% if <b>s.id_sitio == c.id_sitio_id</b> %}
  comprobante ok
{% else %}
  no payments
{% endif %}

Обратите внимание, что обычно ForeignKey s имеют , а не префикс id_ или суффикс _id, поскольку Django автоматически добавит поле с суффиксом _id, которое содержит значение первичного ключаобъект, на который он ссылается.

Ваш шаблон будет печатать no payment несколько раз, так как вы сделали вложенный цикл for.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...