【问题标题】:compare two model instances for equality比较两个模型实例是否相等
【发布时间】:2016-03-05 06:22:42
【问题描述】:

我知道这听起来可能很愚蠢,但我查看了文档以及类似的问题,并尝试了一切都无济于事。我想我错过了 django 中非常基本的东西。

这是我的模型定义

class myModel(models.Model):
      CLIENT_ID=models.CharField(max_length=5, blank=True)
      PROFILE_PICTURE = ImageField()
      other fields...

class myNewModel(models.Model):
      CLIENT_ID=models.CharField(max_length=5, blank=True)
      more fields.. etc

CLIENT_ID 应该主要包含一个数值。

现在在我的模板中,当两个对象的 CLIENT_ID 匹配时,我必须从 myModel 的对象中提取 PROFILE_PICTURE。

我想做的类似于

{% for users in top %}
   {% for client in clients %}
     {% if users.instance.CLIENT_ID == client.instance.CLIENT_ID %}
    <tr>
       <th>{{users.CLIENT_ID}}</th> 
    <th><img src="{{ users.PROFILE_PICTURE.url }}" style="width:auto;height:25px" /></th> 
          {% endif %}{% endfor %}
    {% endfor %}

top 是 myModel 的对象数组,clients 是 myNewModel 的对象数组。

在我的 views.py 中,我提取了模型的所有对象,并且我得到了其他细节。 这样比较合适吗?

请帮忙。

【问题讨论】:

    标签: python model django-templates comparison django-1.8


    【解决方案1】:

    Django 模板中可选/条件元素的一般语法:

    {% if condition %}
        <element />
    {% endif %}
    

    my_model_instance.CLIENT_ID == my_new_model_instance.CLIENT_ID 应该是一个有效条件。

    【讨论】:

    • 是的,我正确使用了语法,但不是条件。使用您的建议给了我一个始终真实的情况,例如如果 my_model_instance.CLIENT_ID 中没有元素/空白值,我仍然看到整个页面都充满了它。虽然这更进一步,但我只想确认是否可以通过这种方式比较 CharField 值。
    • 澄清一下,myModel 中只有几个对象,myNewModel 中有数百个对象 在我的模板中,我需要运行一个 for 循环来遍历,在嵌套模式下运行它并尝试比较我得到始终为真输出。在查询中添加/更新上面的模板代码。非常感谢您的回复
    • 我仍在寻找答案,尝试了我能想到的所有可能的变化,无法超越这个简单的事情。
    猜你喜欢
    • 2011-01-31
    • 2017-09-22
    • 2013-08-18
    • 2021-09-14
    • 2023-03-11
    • 2010-12-05
    • 2016-03-06
    • 1970-01-01
    相关资源
    最近更新 更多