Я использую формы. Моделформ для создания формы.У меня есть четыре раскрывающихся поля (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')
' ''
Я ожидаю, что только выбранные значения из раскрывающегося списка будут переданы во время пост-запроса