Django Form initialization data

Add modify urls.py

    path('initial.html', views.initial),

Modify models.py

class UserInfo(models.Model):
    name = models.CharField(max_length=32)
    ut = models.ForeignKey('UserType', on_delete=models.CASCADE)

Create a database

python manage.py makemigrations
python manage.py migrate

Insert table data

Modify views.py

def initial(request):
    from app01 import models
    if request.method == 'GET':
        nid = request.GET.get('nid')
        m = models.UserInfo.objects.filter(id=nid).first()
        dic = {'username': m.name, 'user_type': m.ut_id}

        obj = forms.InitialForm(dic)
        return render(request, 'initial.html', {'obj': obj})

Modify forms.py

class InitialForm(DForms.Form):
    username = fields.CharField()
    user_type = fields.IntegerField(
        widget=widgets.Select(choices=[])
    )

    def __init__(self, *args, **kwargs):
        # 执行父类构造方法
        super(InitialForm, self).__init__(*args, **kwargs)

        self.fields['user_type'].widget.choices = models.UserType.objects.all().values_list('id', 'caption')

Creating initial.html in the templates folder

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{ obj.username }}
    {{ obj.user_type }}
</body>
</html>

Access http://127.0.0.1:8000/initial.html?nid=2 , according to the initialization parameter nid = 2

Guess you like

Origin www.cnblogs.com/klvchen/p/11244432.html