Django не сохраняет форму

Я немного запутался, в отношении ссылок на другие модели в формах.

Я создал следующую форму, которая ссылается на auditsModel в качестве модели:

class auditForm(ModelForm):
    class Meta:
        model = auditsModel
        fields = '__all__'

Все работает хорошо, и я могу удалять, добавлять и сохранять данные в форме, но затем я захотел создать выпадающие окна с опциями, и эти опции (проверка данных) были сохранены в другой модели под названием dv_model. Поэтому я создал следующее поле с помощью ModelChoiceField, которое принимает в качестве запроса модель dv_model.

Defect_Area_Associate = forms.ModelChoiceField(queryset=dv_model.objects.values_list('Defect_Area_dv',flat=True).distinct(),widget=forms.Select)

Все работает, но когда я нажимаю сохранить и обновляю страницу, она возвращается в прежнее состояние.

enter image description here

Еще кое-что, что я заметил, это то, что другие поля, которые обычно сохраняются, если я попытаюсь изменить их, я получу следующую ошибку:

IntegrityError at /A3QGSDAKRQXG6H/
NOT NULL constraint failed: main_auditsmodel.Defect_Area_Associate

enter image description here

Почему-то форма не сохраняется при обращении к другой модели?

Это мой forms.py:

class auditForm(ModelForm):
    class Meta:
        model = auditsModel
        fields = '__all__'

    #RADIO BUTTONS
    CHOICES = [('Defect', 'yes'),
               ('No Defect', 'no')]
    CHOICES_Action_correctly_captured = [('yes', 'yes'), ('no', 'no')]
    Audit_outcome = forms.ChoiceField(choices=CHOICES, widget=RadioSelect())
    Action_correctly_captured = forms.ChoiceField(choices=CHOICES_Action_correctly_captured, widget=RadioSelect())


    Defect_Area_Associate = forms.ModelChoiceField(queryset=dv_model.objects.values_list('Defect_Area_dv',flat=True).distinct(),widget=forms.Select)
    
    
    
    def __init__(self, *args, **kwargs):
        super(auditForm, self).__init__(*args, **kwargs)
        # Makes the field un-editable
    
    #FIELDS-----------

        # IPV COMMENT BOX
        self.fields['QA_Comments_on_Associate_Action'].widget = forms.Textarea(
            attrs={'class': 'form-control', 'style': 'height: 100px'})  # Sets the size of the widget
        # SIV COMMENT BOX
        self.fields['QA_Comments_on_investigator_Action'].widget = forms.Textarea(
            attrs={'class': 'form-control', 'style': 'height: 100px'})  # Sets the size of the widget


        #ENABLE/DISABLE FIELDS
        self.fields['country'].disabled = True
        self.fields['associate_resolve_date'].disabled = True
        self.fields['qs_login'].disabled = True
        self.fields['associate_resolve_date'].disabled = True
        self.fields['seller_id'].disabled = True
        self.fields['Task_ID'].disabled = True
        self.fields['associate_queue'].disabled = True
        self.fields['associate'].disabled = True
        self.fields['metric_wk_no'].disabled = True
        self.fields['associate_action'].disabled = True
     
        for field in self.fields:
            self.fields[field].required = False
            if field != "qs_login" and field != "Status" and field != "associate_resolve_date" and field != "QA_Comments_on_Associate_Action" and field != "Audit_outcome":
                self.fields[field].widget.attrs['class'] = "form-control"

Views.py

@login_required(login_url='Login')
def auditFormPage(request, pk):
    model = auditsModel.objects.filter(qs_login=request.user)
    form = auditForm()
    
    try:
        data = auditsModel.objects.get(Task_ID=pk)

        form = auditForm(instance=data)
        if request.method == 'POST':
            form = auditForm(request.POST, instance=data)
            if form.is_valid():
                print('TRYING TO SAVE')
                form.save()  
          
    except auditsModel.DoesNotExist:
        pass

    context = {
        "items": model,
        "form": form
    }
    return render(request, "main/auditform.html", context)
Вернуться на верх