Django中Form的数据更新问题

一:html

from django.shortcuts import render
from django import forms
from app01 import models
from django.forms.models import ModelChoiceField
class UserModelForm(forms.Form):
    name=forms.ChoiceField(models.UserInfo.objects.values_list('id','name'))

def index(request):
    form=UserModelForm()
    return render(request,'userinfo.html',{'form':form})

二:数据库

from django.shortcuts import render
from django import forms
from app01 import models
from django.forms.models import ModelChoiceField
class UserModelForm(forms.Form):
    name=forms.ChoiceField()
    def __init__(self,*args,**kwargs):
        super(UserModelForm, self).__init__(*args,**kwargs)
        self.fields['name'].choices=models.UserInfo.objects.values_list('id','name')


def index(request):
    form=UserModelForm()
    return render(request,'userinfo.html',{'form':form})

三:django

from django.shortcuts import render
from django import forms
from app01 import models
from django.forms.models import ModelChoiceField
# Create your views here.
class UserModelForm(forms.Form):
    name=ModelChoiceField(queryset=models.UserInfo.objects.all())


def index(request):
    form=UserModelForm()
    return render(request,'userinfo.html',{'form':form})

一中在程序启动后会将数据库信息放入缓存,所以提供给用户的信息不会随着数据库信息的更新而更新缓存

二和三提供给用户的信息会随着数据库信息的更新而更新,由于二中用户每次访问都会建立新的form对象app

choicefield接受的数据类型为[()] 或(())spa

ModelChoiceField接受的数据类型为querysetcode

生成标签的name属性为form的字段名,id为id_+字段名,value为元组第一个信息,文本内容为元祖第二个信息orm

相关文章
相关标签/搜索