如何在用作窗体的序列化器上循环进入模板

我需要一个CRUD表,并且不想写出字段名(太多)。我想使用序列化程序在第一行中创建表单,并在下面的行中创建已输入的数据。即使选择和FK,显示数据也可以正常工作。问题是我无法遍历表单域。

在“ template1.html”中,我检查了“ render_form”和序列化器。好的,到目前为止。问题:在“ template2.hmtl”中,我尝试循环并将每个表单(渲染的REST序列化程序)放在一列中并得到错误。如何正确循环?

template1.html
...rest of table is omitted...

     <tr>
        <form method="POST">
              {% csrf_token %}

              <th>
                   {% render_form serializer template_pack='rest_framework/inline'%}
                        <input type="submit" value="Save">
              </th>

        </form>
     </tr>
template2.html
...rest of table is omitted...

     <tr>
        <form method="POST">
           {% csrf_token %}
           {% for s in serializer %}         
              <th>
                   {% render_form s template_pack='rest_framework/inline'%}

              </th>
           {% endfor %}
              <th>
                  <input type="submit" value="Save">
              </th>
        </form>
     </tr>

错误:我得到的是“ ... ...模板重做期间发生错误...”,“异常值:
“ CharField”对象没有属性“ data””。它表明“ serializer”不可迭代。我也在模板中尝试了{%for serializer.data%}。

附加信息:

serializer.py

class MyChoiceField(serializers.ChoiceField):
    ''' for display of field labels not keys'''

    def to_representation(self,data):
        if data not in self.choices.keys():
            self.fail('invalid_choice',input=data)
        else:
            return self.choices[data]

class KernSerializer(serializers.HyperlinkedmodelSerializer):
    url = serializers.CharField(source='get_absolute_url',read_only=True)
    # strassenorientierung = serializers.SerializerMethodField(style={'base_template': 'select.html'})
    strassenorientierung = MyChoiceField(choices=Kern.CHOICES_strassenorientierung)
    oberflachenzustand   = MyChoiceField(choices=Kern.CHOICES_oberflachenzustand)
    beregnung            = MyChoiceField(choices=Kern.CHOICES_beregnung)
    date_posted = serializers.DateTimeField(format=None,default_timezone=TIME_ZONE) #format=DATETIME_FORMAT)
    class Meta:
        # 'url',model = Kern
        fields = ['url','id','abstand_horiz','abstand_vert','abstand_fahrtricht','strassenorientierung','oberflachenzustand','beregnung','entnahme_datum','betondeckung','bohrkernbezeichnung','karbonatisierung','wennersonde','comment','date_posted']
        depth = 1


view.py:

...stuff deleted ...
    serializer = KernSerializer()
     content = {'serializer': serializer,'objekt_form': objekt_form,'objektebelow': objektebelow_DRF.data,'form': form,'fields_list_displayed': fields_list_displayed,'form_fields':form_fields,'model':model,'next_url':next_url,'projekt': projekt,'objekt_data': objekt_data,'projekt_id':projekt_id,'objekt_id': objekt_id,'bauteil': bauteil}
     return render(request,template_name,content)
a68434576 回答:如何在用作窗体的序列化器上循环进入模板

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3151739.html

大家都在问