python - 如何通过 DetailView 类从 ForeignKey 字段呈现信息?
问题描述
我有两个模型(分类和分布),它们如下:
# models.py file
class Taxonomia(models.Model):
id_cactacea = models.AutoField(primary_key=True)
subfamilia = models.CharField(max_length=200)
class Distribucion(models.Model):
id_distribucion = models.AutoField(primary_key=True)
localidad = models.TextField(null=True, blank=True)
taxonomia = models.ForeignKey(Taxonomia, on_delete=models.CASCADE, default=1)
正如您在 Distribucion 中看到的,与分类表存在一对多的关系。
在“admin.py”文件中实现这两个模型,以便您可以从 Taxonomia 编辑分布表
class DistribucionInline(admin.TabularInline):
model = Distribucion
extra = 0
class TaxonomiaAdmin(admin.ModelAdmin):
actions = None # desactivando accion de 'eliminar'
list_per_page = 20
search_fields = ('genero',)
radio_fields = {"estado_conservacion": admin.HORIZONTAL}
inlines = [DistribucionInline]
admin.site.register(Taxonomia, TaxonomiaAdmin)
反过来,文件“view.py”呈现分类表如下:
from repositorio.models import Taxonomia, Distribucion
class CactaceaDetail(DetailView):
model = Taxonomia
template_name = 'repositorio/cactacea_detail.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['distribuciones'] = Distribucion.objects.all()
return context
我尝试从模板中访问上下文 ['distribuciones'] 信息,如下所示,但没有得到任何结果:
{% for obj in object.distribuciones %}
{{ obj.localidad }}
{% endfor %}
OBS:对于每个分类学元素,分布表中将有四个元素,因此我需要使用 FOR 循环
我在“CactaceaDetail”视图中添加分类表中的信息的方式是否正确?
我阅读模板中信息的方式是否正确?
如何使用 DJANGO shell 可视化“CactaceaDetail”发送到模板的所有信息,以便将来更好地调试?
谢谢你。
解决方案
尝试从模板中的 for 循环中删除“对象”:
{% for obj in distribuciones %}
{{ obj.localidad }}
{% endfor %}
原因是因为您distribuciones
在常规上下文中传递,而不是作为类的一部分,object
所以您不能使用object.distribuciones
.
推荐阅读
- javascript - @Get 装饰器在 node.js 中无法正常工作
- graphql - “graphql-tools”中的嵌套解析器不起作用
- python - Python pandas:使用 pandas 根据时间条件过滤行
- python - 如何通过硒中的xpath识别前面的兄弟姐妹
- reactjs - React Native - JEST:没有找到 haste.hasteImplModulePath 选项中的 react-native/jest/hasteImpl.js
- angular - Angular 7 和 html2Canvas 使用 foreach 迭代数组总是下载最后找到的索引
- class - 如果第一个父级中存在类,则应用 CSS
- php - 如何在一个结束后加入 2 个 mp3 文件
- mysql - mariadb 10.3对应的mysql版本
- jquery - jQuery计算查询