【发布时间】:2017-05-22 09:49:30
【问题描述】:
我创建了一个包含注释字段的表单,当最终用户填写注释字段并点击提交时,我不仅需要将文本保存在 ModelOne Notes 中,还需要更新 ModelTwo 和 ModelThree 中的注释字段相同的文字。
当前代码:
查看.py
class CommandRadioView(FormView):
template_name = 'Gameflow/command_call_notes.html'
form_class = CommandCallForm
def get(self, request, *args, **kwargs):
self.mission = get_object_or_404(Mission, pk=kwargs.get('mission_id', None))
kwargs['user_id'] = self.mission.proposal.user.id
self.radio = get_object_or_404(CommandPhone, pk=kwargs.get('radio_id', None))
phone_type = CommandPhoneCallType(
description=' General Comm',
phonecall=self.radio
)
phone_type.save()
self.mission.complete_mission(
request.user,
self.radio.created_at
)
return super().get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
if "save" in request.POST:
return super().post(request, *args, **kwargs)
else:
url = self.get_success_url()
return HttpResponseRedirect(url)
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.save()
return super().form_valid(form)
Form.py:
class CommandCallForm(forms.ModelForm):
class Meta:
model = Mission
fields = ['notes']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_id = 'user_form'
self.helper.form_class = 'form-horizontal'
self.helper.label_class = 'col-lg-3'
self.helper.field_class = 'col-lg-8'
self.helper.layout = Layout(
Field(
'notes',
),
FormActions(
Submit('save', 'Submit'),
Button('cancel', 'Cancel', css_class='cancel')
)
)
如果您缺少您需要查看的内容,请告诉我欢呼。
【问题讨论】:
-
您的表格在哪里?发布请求方法实际上什么都没有?
-
@FazilZaid 添加了表单代码,是的,我知道这只是我发现自己必须使用 post 的第二次,而且我不确定执行多个模型所需的查询
-
您能解释一下您要达到的目标吗?我不太明白..
-
@FazilZaid 没问题,所以我在这个表单上有一个注释字段,它链接到任务模型,但我还需要更新其他两个模型,它们的注释字段与输入的文本相同单击提交时的此表单
-
您能否也展示模型以便更好地理解?
标签: python django forms models