python - Django:模板通过表格从多到多显示值
问题描述
我有 3 个模型,我正在尝试从多对多关系 (Django) 的“通过”表中访问和显示数据。
我尝试显示 3 件事:
- 艺术品图像,
- 使用的翻译语言
- 艺术品的翻译名称
我没有做最后一个。它来自多对多关系的“通过”链接);任何的想法 ?
模型.py:
class Language(models.Model):
LANG = (
('FR', 'FR'),
('EN', 'EN'),
)
lang_selected = models.CharField(max_length=3, choices=LANG, verbose_name='Availlable language')
def __str__(self):
return self.lang_selected
class Artwork(models.Model):
artwork_image = models.CharField(max_length=100, null=True, verbose_name="Artwork image")
version = models.ManyToManyField(Language, through='Artwork_language', verbose_name="link artwork -> language")
def __str__(self):
return self.artwork_image
class Artwork_language(models.Model):
Artwork = models.ForeignKey(Artwork, on_delete=models.CASCADE)
Language = models.ForeignKey(Language, on_delete=models.CASCADE)
artwork_name = models.CharField(max_length=100, null=True, verbose_name="Artwork name")
def __str__(self):
return str(self.Artwork) + " translated to " + str(self.Language)
视图.py
class Accueil(TemplateView):
template_name = 'isa/accueil.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['artwork'] = Artwork.objects.all()
context['language'] = Language.objects.all()
context['artwork_language'] = Artwork_language.objects.all()
return context
模板(accueil.html)
<h1>Image | Language translation | Translated name</h1>
{% for artwork in artwork %}
Image : {{ artwork.artwork_image }} <br/>
{% for lang in artwork.version.all %}
Language translation : {{ lang }} <br/>
Translated name : {{ ### }}
{% for i in lang.artwork_language %}
{{ i.artwork_name }}
{% endfor %}
<br/>
{% endfor %}
我尝试了很多东西,Translated name : {{ ### }}
但似乎没有任何效果;我完全走错路了吗?
解决方案
正如我在评论中所说,您应该遵循与 Artwork_language 的关系,然后从那里遵循 FK 与 Language 的关系:
{% for artwork_lang in artwork.artwork_language_set.all %}
Language translation : {{ artwork_lang.Language }} <br/>
Translated name : {{ artwork_lang.artwork_name }}
{% endfor %}
推荐阅读
- javascript - 我通过自我机器人创建了一个代码来让服务器中的每个人都疯狂,但我收到了这个错误
- r - 在 ggplot2 绘图日期数据中添加没有标签的中间标记
- c - 如何读取文件的内容并存储在数组 c 程序中?
- reactjs - 在使用 jest 和 react 测试库时,Aria 属性不会随着 fireEvents 的变化而改变
- reactjs - 如何在 Link 组件 Material UI 中覆盖 Typography colorPrimary
- python - 弃用警告:gdal.py 被放置在命名空间中,现在可以作为 osgeo.gdal 使用
- c++ - 如何在 Windows 10 (C++) 中生成全局滚动事件并禁用鼠标移动?
- c++ - 如何将 libvlcpp 嵌入到 wx(v3) 面板/框架中
- grpc - 如何不从 C++ 连接到 gRPC C++ InProcessChannel?
- java - Spring - 无法导入 spring-cloud-config-client 依赖项。IntelliJ 错误