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

Django 如何访问多对多字段数据?,django,django-models,django-templates,django-views,Django,Django Models,Django Templates,Django Views,我有以下型号: 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) cl

我有以下型号:

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()
不会产生任何输出


如何将其显示为中间带逗号的列表?

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

在django模板语言中,不要使用
()
,因此抓取一个
WorkCast
实例的所有Cast成员将非常困难

work_cast.cast.all
您可以通过实例进行交互,如中所述:


在循环中,django模板语言添加了一些额外的变量,您可以使用这些变量。在这种情况下,我们使用它来避免在列表的最后一个条目后面加逗号。

您是否尝试过
预回迁相关的
?您可以简单地通过
work.cast.all()
将工作,而不是
work.cast.cast.all()
{% for cast in work_cast.cast.all %}
    {{ cast }}
    {% if not forloop.last %}
    , 
    {% endif %}
{% endfor %}