python - Django 从模板中的序列化程序获取 ForeignKey 字段值
问题描述
我正在尝试创建一个页面表单,该表单实际上是一个 DRF 序列化程序(尽管我认为这实际上并没有太大区别)。
在创建对象之前,我需要能够从 ForeignKey 字段的远端访问字段值。
*** Models.py ***
class Tag(models.Model):
name = models.CharField(max_length=20)
colour = models.CharField(max_length=20)
class Entry(models.Model):
title = models.CharField(max_length=100)
date = models.DateField()
tags = models.ForeignKey(Tag)
*** Serializer.py ***
class EntrySerializer(serializers.ModelSerializer):
class Meta:
model = models.Entry
fields = '__all__'
*** views.py ***
from rest_framework.views import APIView
class Submit(APIView):
renderer_classes = [TemplateHTMLRenderer]
template_name = 'submit.html'
def get(self, request, format=None):
context = {}
context['serializer'] = serializers.EntrySerializer(context={'request': request})
return render(request, self.template_name, context)
def post(self, request, format=None):
...
以下适用于访问 2 个对象字段:
*** submit.html ***
{% for tag in serializer.tag.iter_options %}
{{ tag.value }}-{{ tag.display_text }}
{% endfor %}
但是,我想做也能够访问颜色字段:
*** submit.html ***
{% for tag in serializer.tag.iter_options %}
{{ tag.value }}-{{ tag.colour }}
{% endfor %}
蒂亚!
解决方案
通过挖掘原始字段模型,可以获得查询集并对其进行迭代:
{% for tag in serializer.tag.queryset.all %}
{{ tag.value }}-{{ tag.colour }}
{% endfor %}
推荐阅读
- azure - 加拿大中部地区是否可以使用名为“Microsoft Graph 数据连接”的新功能?
- r - 如何在 geom_points() 中细分一个类
- batch-file - 从 Windows 快捷方式文件编码 cmd.exe
- git - 提交到镜像仓库的 Git 镜像
- laravel - laravel : 否则内容为空
- flutter - 如何从 ChangeNotifier 导航?
- javascript - 子路由在延迟加载中不起作用
- html - 如何将 div 和 iframe 放在中心?
- laravel - 在 Elastic Beanstalk CLI 中使用 ebextensions 文件启用 mod_rewrite
- azure-devops - Sprint 计划 - 将积压项目保持在单个 sprint 范围内是最佳实践吗?