Django从模板中的序列化器获取ForeignKey字段值

时间:2019-03-04 00:57:32

标签: python django django-rest-framework foreign-keys

我正在尝试创建一个页面表单,其中该表单实际上是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 %}

TIA!

1 个答案:

答案 0 :(得分:0)

通过深入研究原始字段模型,可以获得查询集并对其进行迭代:

{% for tag in serializer.tag.queryset.all %}
   {{ tag.value }}-{{ tag.colour }}
{% endfor %}