как показать, установить значение для ввода в форме django, используя формы в htmlкак сделать это в формах Django - PullRequest
0 голосов
/ 25 апреля 2019

Я беру значения из таблицы базы данных в файле представлений и должен отобразить эти значения в форме в файле шаблона, который создается с использованием класса форм, и мне нужно показать эти значения для некоторых полей и сделать их неизменяемыми.

   class OrderForm(forms.Form):
        pid=forms.IntegerField()
        pname=forms.CharField()
        pprice=forms.FloatField()
        person_name=forms.CharField(max_length=40)
        emailid=forms.EmailField()
        address=forms.CharField(max_length=40)
        city=forms.CharField(max_length=20)
        state=forms.CharField(max_length=20)
        zip=forms.IntegerField()
        card=forms.IntegerField()
        exp= forms.DateField()
        cvv=forms.IntegerField()
    def order(request,pk):
        pid=pk
        user_name=request.user.username
        qs=Product.objects.get(pid=pid)
        pname=qs.pname.format()
        list={'username':user_name,'pid':pid,'pname':pname}
        form=OrderForm
        return render(request,'order.html',{'data':list,'form':form})

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

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Похоже, вам лучше использовать ModelForm.Это будет что-то вроде:

class OrderForm(forms.ModelForm)
   class Meta:
       model = Order
       widgets = {
           `immutable_field` : forms.TextInput(attrs={'readonly':True})
       }

def order(request,pk):
        pid=pk
        user_name=request.user.username
        qs=Product.objects.get(pid=pid)
        pname=qs.pname.format()
        list={'username':user_name,'pid':pid,'pname':pname}
        form=OrderForm()
        form.fields['immutable_field'] = "Some Value"
        return render(request,'order.html',{'data':list,'form':form})

Если у вас уже есть заказ, вы можете предварительно заполнить поля с помощью form=OrderForm(instance=order)

0 голосов
/ 25 апреля 2019

Сделать поле как отключенное из Form метода init и передать initial значение из области просмотра

class OrderForm(forms.Form):
        pid=forms.IntegerField()
        pname=forms.CharField()
        pprice=forms.FloatField()
        person_name=forms.CharField(max_length=40)
        emailid=forms.EmailField()
        address=forms.CharField(max_length=40)
        city=forms.CharField(max_length=20)
        state=forms.CharField(max_length=20)
        zip=forms.IntegerField()
        card=forms.IntegerField()
        exp= forms.DateField()
        cvv=forms.IntegerField()

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['username'].disabled = True
        self.fields['pid'].disabled = True
        self.fields['pname'].disabled = True

Здесь вы можете передать словарь в виде initial значения полей.

def order(request,pk):
        pid=pk
        user_name=request.user.username
        qs=Product.objects.get(pid=pid)
        pname=qs.pname.format()
        initial={'username':user_name,'pid':pid,'pname':pname}
        form=OrderForm(initial=initial)
        return render(request,'order.html',{'data':initla,'form':form})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...