Редактирование 1-й строки с помощью Django Forms не работает, но работает для остальных строк. Как это исправить?

У меня есть Django Form, у которого есть проблема.

Не редактируется 1-й ряд из table из database fetched в template и нормально работает со 2-го ряда и далее .

Похоже, что проблема связана с динамическим URL

Представьте в этой HTML таблице

enter image description here

:- когда я нажимаю кнопку редактирования для 1-ой строки, новый URL не генерируется, т.е. возвращается тот же старый URL, скажем http://xxx.xx:xx/djangoapp/state_wise, который просто обновляет страницу

:- но когда я нажимаю кнопку редактирования для 2nd row и далее, URL динамически изменяется как http://xxx.xx:xx/djangoapp/edit_data_from_db/8086/?

и форма редактирования появляется как :

enter image description here

файл 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?

Вернуться на верх