Django形式,多对多关系和数组字段结果以及产生的方括号

时间:2019-01-25 14:42:02

标签: jquery django django-forms

我有一个包含M2M关系的模型:

class Plane(models.Model):

    ...

    start_types = models.ManyToManyField(StartType, related_name='planes')

class StartType(models.Model):

    ...

    name = models.CharField(max_length=16, verbose_name=_('Name'))

由此,我生成一个表单,其中start_types字段由选择倍数(select2)表示。 我是手动执行此操作,而不是使用Django表单,因此我不确定如何在Django表单中解决该问题,但是我的问题在于Django代码,因此请耐心等待一下:

将此表单从浏览器填写完毕发送回服务器时,我将执行jQuery PUT AJAX请求。 jQuery看到该值是一​​个数组,还通过在字段名称之后添加方括号来修改PUT请求中的字段名称,如下所示:start_types[]

我调试了代码,发现django.utils.MultiValueDict不知道这种编码,并且将为以这种方式编码的数据返回一个空列表。

所以我目前的解决方法是也简单地查询start_types[],并且只有当该查询不返回值时,我才使用默认功能(不带花括号)。

这不是我第一次遇到这个问题,所以在这一点上,我认为最好提出以下两个问题:

  1. 这是故意用Django代码编写的吗?还是问题/公关有序?
  2. 我是否应该指示jQuery使用“传统”模式来编码表单数据?

0 个答案:

没有答案