Редактирование 1-й строки с помощью Django Forms не работает, но работает для остальных строк. Как это исправить?
У меня есть Django Form
, у которого есть проблема.
Не редактируется 1-й ряд из table
из database fetched
в template
и нормально работает со 2-го ряда и далее .
Похоже, что проблема связана с динамическим URL
Представьте в этой HTML таблице
:- когда я нажимаю кнопку редактирования для 1-ой строки, новый URL не генерируется, т.е. возвращается тот же старый URL, скажем http://xxx.xx:xx/djangoapp/state_wise
, который просто обновляет страницу
:- но когда я нажимаю кнопку редактирования для 2nd row
и далее, URL динамически изменяется как http://xxx.xx:xx/djangoapp/edit_data_from_db/8086/?
и форма редактирования появляется как :
файл forms.py
имеет вид:
class details_to_database(forms.ModelForm):
class Meta:
model = GroupDetail
BOOL_CHOICES = ((True, 'Yes'), (False, 'No'))
UNIT_CATEGORIES = (('ABC', 'ABC'), ('DAMU', 'DAMU'))
fields = ["unit_type",
"state_name",
"unit_name",
"district_name",
"block_name",
"village_name",
"village_covered",
"number_of_groups",
"number_of_farmers"]
labels = {
"unit_type":"Unit Type",
"state_name":"State Name",
"unit_name":"Unit Name",
"district_name":"District Name",
"block_name":"Block Name",
"village_covered":"Village Covered (Yes/No)",
"number_of_groups":"Number of groups",
"number_of_farmers":"Number of farmers"}
widgets = {
"unit_type":forms.Select(attrs={"class":"form-control", "id":"unit_type_id"}, choices=UNIT_CATEGORIES),
"state_name":forms.TextInput(attrs={"class":"form-control", "id":"state_name_id"}),
"unit_name":forms.TextInput(attrs={"class":"form-control", "id":"unit_name_id"}),
"district_name":forms.TextInput(attrs={"class":"form-control", "id":"district_name_id"}),
"block_name":forms.TextInput(attrs={"class":"form-control", "id":"block_name_id"}),
"village_name":forms.TextInput(attrs={"class":"form-control", "id":"village_name_id"}),
"village_covered":forms.Select(attrs={"class":"form-control", "id":"village_covered_id"}, choices=BOOL_CHOICES),
"number_of_groups":forms.NumberInput(attrs={'min': '1',"class":"form-control", "id":"number_of_groups_id"}),
"number_of_farmers":forms.NumberInput(attrs={'min': '1',"class":"form-control", "id":"number_of_farmers_id"})
}
Файл model.py
имеет вид:
BOOL_CHOICES = ((True, 'Yes'), (False, 'No'))
UNIT_CATEGORIES = (('ABC', 'ABC'), ('DAMU', 'DAMU'))
class GroupDetail(models.Model):
"""Group Information options"""
unit_type = models.CharField(max_length=16, choices=UNIT_CATEGORIES, default="DAMU")
state_name = models.ForeignKey(State, to_field='state_name', on_delete=models.SET_NULL, null=True)
unit_name = models.CharField(max_length=100, default="KVK")
district_name = models.ForeignKey(District, to_field='district_name', on_delete=models.SET_NULL, null=True)
block_name = models.ForeignKey(Block, to_field='block_name', on_delete=models.SET_NULL, null=True)
village_name = models.CharField(max_length=150)
village_covered= models.BooleanField(verbose_name=_('Village Covered'), choices=BOOL_CHOICES)
number_of_groups= models.PositiveIntegerField(validators=[MinValueValidator(0), MaxValueValidator(100)])
number_of_farmers= models.PositiveIntegerField(validators=[MinValueValidator(1), MaxValueValidator(1000)])
class Meta:
db_table = 'Group_Info_Table'
def __str__(self):
return self.unit_type
return self.state_name
return self.unit_name
return self.district_name
return self.block_name
return self.village_name
return self.village_covered_through_whatsapp_group
return self.number_of_whatsapp_group_created
return self.number_of_farmers_covered_in_the_village
Файл views.py
имеет вид:
def edit_data_from_db(request, id):
if request.method == "POST":
data_from_query = GroupDetail.objects.get(pk=id)
form = details_to_database(request.POST, instance=data_from_query)
if form.is_valid():
form.save()
else:
data_from_query = GroupDetail.objects.get(pk=id)
form = add_whatsapp_details_to_database(instance=data_from_query)
return render(request, 'Edit_Form_Values/edit_record.html', {"form_entry_update": form})
Файл urls.py
имеет вид:
urlpatterns = [
path('edit_data_from_db/<int:id>/', views.edit_data_from_db, name="edit_data_from_db"),
]
Как исправить это, чтобы URL для 1-й строки генерировался или Как сделать форму редактируемой для 1-й строки таблицы в шаблонах HTML?