Python 如何在Django中比较对象?

Python 如何在Django中比较对象?,python,django,Python,Django,你好,我是Django的新手,也是编程新手。有人能告诉我如何比较由同一模型创建的对象吗 产品1 商店1 产品1 商店2 产品1 商店3 如果我的应用程序发现多个具有相同参数“product1”的对象,我希望我的应用程序能做些什么,理想情况下,它会创建一个如下对象: 产品1 商店1 商店2 商店3 型号: class ProductInShop (models.Model): product = models.ForeignKey(Product) shop = m

你好,我是Django的新手,也是编程新手。有人能告诉我如何比较由同一模型创建的对象吗

  • 产品1
  • 商店1
  • 产品1
  • 商店2
  • 产品1
  • 商店3
如果我的应用程序发现多个具有相同参数“product1”的对象,我希望我的应用程序能做些什么,理想情况下,它会创建一个如下对象:

  • 产品1
  • 商店1
  • 商店2
  • 商店3
型号:

class ProductInShop (models.Model):
    product = models.ForeignKey(Product)
    shop = models.ForeignKey(Shop)
class Product(models.Model):
    ... all other fields
    shops = models.ManyToManyField(Shop)
视图:

模板:

{% for asd in all_products %}
    <li>{{ asd.product.name }}</li>
    <li>{{ asd.shop.name }}</li>
    </br>
{% endfor %}
{% for product in all_products %}
    <li>{{ product.name }}</li>
    {% for shop in product.shops.all() %}
        <li>{{ shop.name }}</li>
    {% endfor %}
    </br>
{% endfor %}
{% for product in all_products %}
    <li>{{ product.name }}</li>
    {% for productinshop in product.productinshop_set.all %}
        <li>{{ productinshop.shop.name }}</li>
    {% endfor %}
    </br>
{% endfor %}
{%用于所有_产品中的asd%}
  • {{asd.product.name}
  • {{asd.shop.name}

  • {%endfor%}
    您可以比较对象的
    md5


    我认为,你可以像这样改变你的结构:

    型号:

    class ProductInShop (models.Model):
        product = models.ForeignKey(Product)
        shop = models.ForeignKey(Shop)
    
    class Product(models.Model):
        ... all other fields
        shops = models.ManyToManyField(Shop)
    
    视图:

    模板:

    {% for asd in all_products %}
        <li>{{ asd.product.name }}</li>
        <li>{{ asd.shop.name }}</li>
        </br>
    {% endfor %}
    
    {% for product in all_products %}
        <li>{{ product.name }}</li>
        {% for shop in product.shops.all() %}
            <li>{{ shop.name }}</li>
        {% endfor %}
        </br>
    {% endfor %}
    
    {% for product in all_products %}
        <li>{{ product.name }}</li>
        {% for productinshop in product.productinshop_set.all %}
            <li>{{ productinshop.shop.name }}</li>
        {% endfor %}
        </br>
    {% endfor %}
    
    模板:

    {% for asd in all_products %}
        <li>{{ asd.product.name }}</li>
        <li>{{ asd.shop.name }}</li>
        </br>
    {% endfor %}
    
    {% for product in all_products %}
        <li>{{ product.name }}</li>
        {% for shop in product.shops.all() %}
            <li>{{ shop.name }}</li>
        {% endfor %}
        </br>
    {% endfor %}
    
    {% for product in all_products %}
        <li>{{ product.name }}</li>
        {% for productinshop in product.productinshop_set.all %}
            <li>{{ productinshop.shop.name }}</li>
        {% endfor %}
        </br>
    {% endfor %}
    
    然后在模板中:

    {% for product in all_products %}
        <li>{{ product.name }}</li>
        {% for shop in product.get_shops %}
            <li>{{ shop.name }}</li>
        {% endfor %}
        </br>
    {% endfor %}
    
    {%用于所有_产品中的产品%}
    
  • {{product.name}
  • {product.get_shops%}
  • {{shop.name}
  • {%endfor%}
    {%endfor%}
    ProductInShop中的字段不止两个。我无法更改结构。如果要比较对象,则不应使用MD5,只需使用object.id即可