我有一个名为shift
这里是我的forms.py
class ShiftForm(forms.ModelForm):
class Meta:
model = Shift
fields = '__all__'
为我的createview
开设shift
类
这里是我的views.py
class ShiftCreateView(CreateView):
fields = ('start', 'end', 'off_start', 'off_end', 'shift', 'employee')
model = models.Shift
并且我已经创建了表单模板,
它的工作和数据已提交到我的数据库,想象一下我的数据库表是这样的:
#table shift
+---------------+---------------+---------------+---------------+------------+------------+-------------+
| start | end | off_start | off_end | time | user_id | shift_id |
+---------------+---------------+---------------+---------------+------------+------------+-------------+
| 2018-01-01 | 2018-01-05 | 2018-01-06 | 2018-01-07 | 07:00 | 1 | 1 |
| .... | .... | .... | .... | .... | .... | ... |
+---------------+---------------+---------------+---------------+------------+------------+-------------+
我的问题是如何以一种形式将其设置为多个?...
像这样的例子:
因此,在我的数据库表中,单次提交将如下所示。
#table shift
+---------------+---------------+---------------+---------------+------------+------------+-------------+
| start | end | off_start | off_end | time | user_id | shift_id |
+---------------+---------------+---------------+---------------+------------+------------+-------------+
| 2018-01-01 | 2018-01-05 | 2018-01-06 | 2018-01-07 | 07:00 | 1 | 1 |
| 2018-01-01 | 2018-01-05 | 2018-01-06 | 2018-01-07 | 07:00 | 1 | 2 |
| 2018-01-01 | 2018-01-05 | 2018-01-06 | 2018-01-07 | 07:00 | 1 | 3 |
| 2018-01-01 | 2018-01-05 | 2018-01-06 | 2018-01-07 | 07:00 | 1 | 4 |
| .... | .... | .... | .... | .... | .... | ... |
+---------------+---------------+---------------+---------------+------------+------------+-------------+
在我的示例中,它一次执行了4次提交。
谢谢!
答案 0 :(得分:1)
在前端,将onclick属性添加到保存按钮,然后调用一个函数以JSON形式排列数据,使它们看起来像以下内容:
{
"employee": "xyz" ,
"weeks_schedule" :[
{"data_week": "value_1", "data_off_week": "value_2", "shift": "value_3"},
{"data_week": "value_4", "data_off_week": "value_5", "shift": "value_6"},
.
.
.
]
}
当然,在将数据排列在此JSON中之后,在函数末尾,将其发布到正确的URL。
在您看来,您应该通过添加编写良好的post方法来不同地处理此JSON:
class ShiftCreateView(CreateView):
def post(self, request, *args, **kwargs):
json_data = json.loads(request.body.decode('utf-8'))
employee = json_data["employee"]
for week in json_data["weeks_schedule"]:
# Code for saving in the database here
return _(some_http_response)
如果您想在没有json的情况下执行此过程,只需提交您的表单,而不要输入以下行:
json_data = json.loads(request.body.decode('utf-8'))
写
form = request.POST
记住要像json中一样手动清理,验证和保存数据,因此,如果您运行 print(request.POST),您会注意到您的数据看起来像: / p>
<QueryDict: {'employee': 'xyz', 'off_week': 'xyz_2' ......}>
当然,您的QueryDict看起来会有所不同,但是如果您知道它的外观,则应该可以处理它。