【发布时间】:2021-10-09 22:05:48
【问题描述】:
我是一名正在学习如何玩 Django 的学生。您将使用 Vault 中的模板标签输出 p-tag。我要使用的模板标签是“option.product_code和product.product_code在选项表中相同,如果有两个选项.option_code”。 if语句应该如何填写?
我想补充
你好
参考以上。请给我一些建议。Models.py
class Product(models.Model):
product_code = models.AutoField(primary_key=True)
name = models.CharField(max_length=200, db_index=True)
image = models.ImageField(upload_to='products/%Y/%m/%d', blank=True)
class Meta:
ordering = ['product_code']
def __str__(self):
return self.name
class Option(models.Model):
option_code = models.AutoField(primary_key=True)
name = models.CharField(max_length=32)
product_code = models.ForeignKey(Product, on_delete=models.CASCADE, db_column='product_code')
def __str__(self):
return self.name
class Meta:
ordering = ['option_code']
views.py
def index(request):
products = Product.objects.prefetch_related('option_set').annotate(noption=Count('option_set'))
return render(request, 'option/option_list.html', {'products':products})
模板
{% for product in products %}
{% for option in product.option_set.all %}
{% if product.noption >= 2 %}
<p> hello! </p>
{% endif %}
{% endfor %}{% endfor %}
错误:
Cannot resolve keyword 'option_set' into field. Choices are: product_code, name, option
【问题讨论】:
-
这确实不属于模板,而是属于view。请分享相关模型和视图。
-
@WillemVanOnsem 选项表包括 option_code、optionn_name、product_code。产品表包含 product_code product_name, image。 Option的product_code注册了一个叫‘hat’的商品,option_name注册了size和color两个商品。查看에서는 product = Product.objects.all() Option.objects.all() 这就是全部。我只是想把 p-tag 放在那个条件下。
-
请edit提问。
-
@WillemVanOnsem 我已经编辑了内容。感谢您的收看。
-
这是一个 Django 被“固执己见”的例子。如果你想把复杂的逻辑放在模板中(不同的意见)你仍然可以使用 Django,但是你会想用 Jinja 模板引擎来使用它。 (我个人认为 Django 开发人员的意见往往是正确的)。
标签: django django-models django-rest-framework django-views django-templates