代码之家  ›  专栏  ›  技术社区  ›  H C

如何访问多对多的字段数据?

  •  0
  • H C  · 技术社区  · 5 年前

    我有以下型号:

    class Work_Music(MPTTModel, Work):
        name = models.CharField(max_length=10, null=True, blank=True)   
        key = models.CharField(max_length=10, null=True, blank=True)
        tonality = models.CharField(max_length=20, null=True, blank=True)
    
    class WorkCast(models.Model):
        work = models.ForeignKey(Work_Music, verbose_name=_('work'), related_name='workcast', null=True, blank=True, on_delete=models.PROTECT)
        cast = models.ManyToManyField(Cast, verbose_name=_('cast'), related_name='workcast', blank=True)
        order = models.DecimalField(max_digits=100, decimal_places=2, null=True, blank=True)
    
    class Cast(models.Model):
        name = models.CharField(max_length=100, null=True, blank=True)
    

    在view.py中,我在模板上下文中发送以下内容:

    work_cast = WorkCast.objects.get(work=self.kwargs['pk'])
    

    如何在模板中显示,

     Cast #1, Cast #2, Cast #3, Cast #4
    

    我该怎么抓住所有的演员?它是?

    work.cast.cast.all()
    

    不会产生任何输出。

    0 回复  |  直到 5 年前
        1
  •  0
  •   Chris    5 年前

    如果我理解正确,您将向模板发送一个名为“work_cast”的上下文变量,该变量引用一个 WorkCast 实例。

    在django模板语言中,不要使用 () 铸件 实例将是

    work_cast.cast.all
    

    docs :

    {% for cast in work_cast.cast.all %}
        {{ cast }}
        {% if not forloop.last %}
        , 
        {% endif %}
    {% endfor %}