我正在尝试使用 ModelChoiceField 字段实现一个下拉字段,该字段包含客户帐单信息表单中的国家/地区名称列表。但是,当我尝试渲染表单时,我得到“AttributeError,'str' object has no attribute 'all'”,我不知道是什么原因造成的。
我有一个包含国家代码和名称的查找表:
# models.py
from django.db import models
class Country(models.Model):
# Ex: code = 'us', name = 'United States'
country_cd = models.CharField(max_length=2)
name = models.CharField(max_length=40)
然后,我有一个 Customer 模型和关联的 Customer Billing Information modelform,其中包含一个指向上述查找表的外键字段:
# models.py
class Customer(models.Model):
user = models.OneToOneField(User, primary_key=True)
country = models.ForeignKey(Country)
# Other fields...
# forms.py
from django import forms
from app.models import Customer, Country
class CustomerBillingInfoForm(forms.ModelForm):
class Meta:
model = Customer
fields = ('country',)
country = forms.ModelChoiceField(queryset='Country.objects.all()', empty_label=None)
我已经在调试器中运行了它,并且执行“type(country)”确实表明它是一个 QuerySet,并且“Country.objects.all()”正在返回我的“country”数据库中的所有国家。堆栈跟踪说错误是在“ModelChoiceIterator”类中的 /django/forms/models.py 模块(Django v. 1.4)的第 896 行引发的。
有人看到我在这里做错了吗?非常感谢您的帮助。