我有一个工具列表,其中添加了一个部件作为捆绑包。捆绑包被列为多对多字段中的一部分,因此我需要迭代这些部分以查看是否存在正在显示的工具的附加产品。如果零件存在,那么我想只显示零件本身。我尝试使用下面的代码进行解决,它确实检查它是否存在,但打印出查询集。我理解.all()
是导致这种情况的原因,但我无法弄清楚如何检查然后只显示单个部分。谢谢你的帮助。
{% for p in tool.parts.all %}
{% if 'bp-01' %}
<h3>Bundle Included:</h3>
{{ p.model_number }}
...
{% endif %}
{% endfor %}
零件模型
class Part(Timestamp):
model_number = models.ForeignKey(ModelNumber)
price = models.SmallIntegerField()
title = models.CharField(max_length=250)
slug = models.SlugField(help_text="slug-title-should-be-like-this")
description = RichTextField()
type = models.ForeignKey(Type, blank=True)
category = models.ForeignKey(Category)
工具模型
class Tool(Timestamp):
model_number = models.ForeignKey(ModelNumber)
price = models.SmallIntegerField()
title = models.CharField(max_length=250)
slug = models.SlugField(help_text="slug-title-should-be-like-this")
description = RichTextField()
type = models.ForeignKey(Type)
category = models.ForeignKey(Category)
parts = models.ManyToManyField(Part, blank=True, related_name="parts")
型号型号
class ModelNumber(models.Model):
slug = models.SlugField(max_length=100, unique=True, help_text="slug-title-should-be-like-this")
class Meta:
verbose_name = 'Model Number'
verbose_name_plural = 'Model Numbers'
def __str__(self):
return self.slug
答案 0 :(得分:1)
如果您在./while.sh: 5: ./while.sh: Syntax error: "done" unexpected
上只有slug字段,则可以使用ModelNumber
来检查条件:
{% if p.model_number.slug== 'bp-01' %}
答案 1 :(得分:0)
根据ModelNumber
模型的外观,您可以将值与以下内容进行比较:
{% for p in tool.parts.all %}
{% if p.model_number.number == 'bp-01' %}
<h3>Bundle Included:</h3>
{{ p.model_number }}
...
{% endif %}
{% endfor %}
这假设ModelNumber
看起来像这样:
class ModelNumber(models.Model):
number = models.CharField(max_length=20)
....
def __str__(self):
return self.number