Python Django通过ModelForm字段更新三个同名模型的字段
我创建了一个表单,该表单有一个notes字段,当最终用户填写notes字段并点击submit时,我需要它不仅在ModelOne notes中保存文本,还使用相同的文本更新ModelTwo&ModelTwore中的notes字段 当前代码: View.pyPython Django通过ModelForm字段更新三个同名模型的字段,python,django,forms,models,Python,Django,Forms,Models,我创建了一个表单,该表单有一个notes字段,当最终用户填写notes字段并点击submit时,我需要它不仅在ModelOne notes中保存文本,还使用相同的文本更新ModelTwo&ModelTwore中的notes字段 当前代码: View.py class CommandRadioView(FormView): template_name = 'Gameflow/command_call_notes.html' form_class = CommandCallForm def get
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')
)
)
任何缺少您需要查看的内容,请让我知道干杯。根据您的提问和我的理解,我已编辑了您的观点 像这样,
class CommandRadioView(FormView):
template_name = 'Gameflow/command_call_notes.html'
form_class = CommandCallForm
def post(self, request, *args, **kwargs):
form_class = self.get_form_class()
form = self.get_form(form_class)
if form.is_valid():
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 self.form_valid(form)
else:
return self.form_invalid(form)
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.save()
return super().form_valid(form)
你的表格在哪里?post请求方法上没有任何内容?@FazilZaid添加了表单代码,是的,我知道这只是我发现自己第二次不得不使用post,我不确定需要进行多个模型的查询。请解释一下您试图实现的是什么?我不太明白..@FazilZaid没问题,所以我在这个表单上有一个与任务模型链接的注释字段,但我还需要更新另外两个模型,它们的注释字段与单击提交时在此表单中输入的文本相同。您能不能也显示模型以更好地理解?