form.is_valid () возвращает false для полей опций выбора для django Foms - PullRequest
0 голосов
/ 02 июня 2019

Я использую формы. Моделформ для создания формы.У меня есть четыре раскрывающихся поля (BLOCK_CODE, PANCHAYAT_CODE, OFFICER_DESIGNATION, ACTIVE_OR_NONACTIVE) в моих формах, которые получают фильтр с помощью параметра, пропущенного через представление в форме моделей.До здесь все работает.Моя форма создана с нужным полем и значениями в нем.Теперь, когда я запрашиваю метод post, мои формы не работают во время проверки.После печати формы (я добавил картинку для справки) в командном окне я увидел, что Моя форма передает все значения, доступные в раскрывающихся списках всех раскрывающихся полей (BLOCK_CODE, PANCHAYAT_CODE и т. Д.), Даже после выбора значений в раскрывающемся списке.Поскольку я новичок в Django, пожалуйста, помогите мне, что я скучаю.Я перебрал много вопросов о доступном стеке, но не смог найти подходящего решения.

--------------------- models.py-------

class OFFICER_INFORMATION(models.Model):
    NON_ACTIVE=0
    ACTIVE=1
    NONACTIVE_ACTIVE_choice = (
        (NON_ACTIVE, 'Non-Active'),
        (ACTIVE, 'Active'),
    )

    GRAM_ROZGAR_SEVAK = "GRS"
    TECHNICAL_OFFICER = "TO"
    DATA_OPERATOR = "DO"
    MONITORING_APO = "MAPO"
    WAGELIST_OPERATOR = "WG"
    FTO_GENERATION = "FTO"
    FIRST_FTO_SIGNATURE = "FSIGN"
    SECOND_FTO_SIGNATURE = "SSIGN"
    OFFICER_DESIGNATION_CHOICE = (
            (GRAM_ROZGAR_SEVAK,'GRAM ROZGAR SEVAK'),
            (TECHNICAL_OFFICER,'TECHNICAL OFFICER'),
            (DATA_OPERATOR,'DATA OPERATOR'),
            (MONITORING_APO,'MONITORING APO'),
            (WAGELIST_OPERATOR,'WAGELIST OPERATOR'),
            (FTO_GENERATION,'FTO GENERATION'),
            (FIRST_FTO_SIGNATURE,'FIRST FTO SIGNATURE'),
            (SECOND_FTO_SIGNATURE,'SECOND FTO SIGNATURE'),
        )
        BLOCK_CODE = models.ForeignKey(Block, on_delete=models.CASCADE)
        PANCHAYAT_CODE = models.ForeignKey(Panchayat, on_delete=models.CASCADE)
        OFFICER_NAME = models.CharField(max_length=255)
        OFFICER_DESIGNATION = models.CharField(max_length=100,choices=OFFICER_DESIGNATION_CHOICE)
        phone_regex = RegexValidator(regex=r'd{10}', message="Phone number must be entered in the format : '9999999999'. Up to 10 digits allowed.")
        OFFICER_MOBILE_CONTACT_NUMBER = models.CharField(validators=\[phone_regex\],max_length=10)
        ACTIVE_OR_NONACTIVE = models.BooleanField(choices=NONACTIVE_ACTIVE_choice)

        class Meta:
            db_table = "OFFICER_INFORMATION_TO_SEND_SMS"][1]][1]

'' '--------------- views.py ------------------ '' '

def officer_entry_create(request,id):
    BLOCK_CODE =int(id)
    data = dict()

    if request.method == 'POST':
        BLOCK_CODE = request.POST['BLOCK_CODE']
        form = OfficerForm(request.POST)
        print("form data request.post :",form)
        if form.is_valid():
            form.save()
            data['form_is_valid'] = True
        else:
            data['form_is_valid'] = False
    else:
        form = OfficerForm()

        context = {'form': form ,'BLOCK_CODE':BLOCK_CODE}
        data['html_form'] = render_to_string('sms_notification_app/includes/partial_officer_create.html',
            context,
            request=request
        )
    return JsonResponse(data)

' ''

-------------- forms.py ---------------- '' '

from .models import Panchayat,Block
class OfficerForm(forms.ModelForm):
    class Meta:
        model = OFFICER_INFORMATION
        fields = ('BLOCK_CODE', 'PANCHAYAT_CODE', 'OFFICER_DESIGNATION','OFFICER_NAME', 'OFFICER_MOBILE_CONTACT_NUMBER', 'ACTIVE_OR_NONACTIVE', )

    def __init__(self, BLOCK_CODE, *args, **kwargs):
        super(OfficerForm, self).__init__(*args, **kwargs)
        self.fields['BLOCK_CODE'].queryset = Block.objects.filter(BLOCK_CODE=BLOCK_CODE)
        self.fields['PANCHAYAT_CODE'].queryset = Panchayat.objects.filter(BLOCK_CODE_id=BLOCK_CODE).order_by('PANCHAYAT_NAME')

' ''

Я ожидаю, что только выбранные значения из раскрывающегося списка будут переданы во время пост-запроса

...