模板中的多对多项:检查是否有空或无

时间:2012-08-26 13:56:28

标签: django django-models django-templates django-template-filters

Django初学者问题。我有以下型号:

class Leg(models.Model):
    startpoint = models.CharField(max_length=50, help_text="examples: 'Smith Elementary' or 'riders' houses'; less than 50 characters.")
    endpoint = models.CharField(max_length=50, help_text="examples: 'Smith Elementary' or 'riders' houses'; less than 50 characters.")
    riders = models.ManyToManyField(Rider, blank=True)
    drivers = models.ManyToManyField(Driver, blank=True)

我将模板中可用的模型实例设为'leg'。在模板中,我想看看,对于那个实例,是否有任何关联的驱动程序。我已经尝试了{%if leg.drivers%},但无论腿部是否有任何驱动程序,它似乎总是评估为True。

如何查看是否有任何驱动程序?对不起基本问题,但我似乎无法弄明白。

2 个答案:

答案 0 :(得分:12)

{% if leg.drivers %}将永远是真的,因为这将是一个多对多的经理。 尝试{% if leg.drivers.all %}获取所有相关的驱动程序。

答案 1 :(得分:1)

为此制作了for ... empty模板标记。只需循环leg.drivers.all,如果你想在没有驱动程序时显示一些消息,那么你可以在空子句中这样做。