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 = Work_Music.objects.get(work=self.kwargs['pk'])
如何通过 Work_Music 对象访问 WorkCast?
如何在模板中显示,
Cast #1, Cast #2, Cast #3, Cast #4
我如何抓住所有演员?是吗?
work.workcast.cast.all()
不产生任何输出。
如何将其显示为中间有逗号的列表?
解决方案
我认为您指的是_set
django 中的反向模型参考。你可以在这里找到更多信息。在你的情况下,你会做类似的事情,
work_music = WorkMusic.object.get(pk=1)
work_music.workcast_set.all() # would get you all workcast related to that work music object
希望这可以帮助!
推荐阅读
- authentication - 使用 API 身份验证的基于 Windows 的身份验证
- android - 维护形状数据库以在图像上突出显示索引文本
- javascript - 在 jQuery 中提交时获取价值的问题
- pawn - 移动演员时如何获得演员位置
- javascript - Promise.all().then() 在 promise.all() 完成之前执行
- sql - 在 SQL Server 中动态切换 Select All 和 Where 子句
- python - 如何从另一个模块执行功能?
- javascript - require('node-fetch') 给出 ERR_REQUIRE_ESM
- html - 在反应 tagcloud 中有些词是不可点击的
- java - 选择要在 Cordova Android 应用程序上启动的活动