我是Django的新手,可能犯了一个错误。
我创建了包含以下内容的forms.py:
from django import forms
class CustForm(forms.Form):
OPTIONS = ([(account.id, account) for account in Account.objects.filter(active=True)])
CustId = forms.ChoiceField(widget=forms.Select, choices=OPTIONS)
在views.py中:
from .forms import CustForm
def listcust(request):
if request.method == 'POST':
form = CustForm(request.POST)
if form.is_valid():
customer = form.cleaned_data.get('CustId')
applist = Appliance.objects.filter(cslic=customer)
customer = Account.objects.get(id=customer)
return render(request, 'addapp/listapp.html', {'customer' : customer, 'applist' : applist })
else:
form = CustForm()
return render(request, 'addapp/listcust.html', {'form':form })
这有效,但如果我更改了"有效"在重新启动/重新加载Apache之前,帐户的属性,下拉菜单的内容不会改变。
你能指出我正确的方向吗?
答案 0 :(得分:2)
这是因为它在运行时执行查询。
一种方法是使用ModelChoiceField
https://docs.djangoproject.com/en/dev/ref/forms/fields/#modelchoicefield
另一种方法是使用方法或lambda返回OPTIONS。
另一种方法是在类的 init 中进行操作。