django - 如何访问多对多字段数据?
问题描述
我有以下型号:
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_cast”的上下文变量,并且该变量引用了一个WorkCast
实例。
在 django 模板语言中,不要使用如此抓取该实例()
的所有 Cast 成员WorkCast
work_cast.cast.all
您可以按照文档中的描述对实例进行交互:
{% for cast in work_cast.cast.all %}
{{ cast }}
{% if not forloop.last %}
,
{% endif %}
{% endfor %}
在循环中,django 模板语言添加了一些您可以使用的额外变量。在这种情况下,我们使用它来避免在列表的最后一个条目之后放置逗号。
推荐阅读
- typeform - 使用 TypeForm 从 url 获取参数值
- java - 将 Java 代码转换为 Kotlin 以实现 OnChangeListener 时遇到问题
- javascript - 从源 URL 获取即时 XML 更新
- r - R:在斜线后切断字符串
- corda - FlowException 与 CordaRuntimeException
- haskell - 我将如何使用每次传入都会重置的超时进行管道传输?
- excel - 强制 Excel 使用英文公式格式
- reactjs - 使用 Redux 存储中的初始值填充 Redux-Form
- python - 从 Ubuntu 终端运行 python 脚本时找不到包
- c++ - 分配和增加循环迭代器时的 C++ 无限循环(gcc 错误?)