Python Django通过ModelForm字段更新三个同名模型的字段

Python 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

我创建了一个表单,该表单有一个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(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没问题,所以我在这个表单上有一个与任务模型链接的注释字段,但我还需要更新另外两个模型,它们的注释字段与单击提交时在此表单中输入的文本相同。您能不能也显示模型以更好地理解?