ModelChoiceFieldフィールドを使用して、顧客請求情報フォームに国名のリストを含むプルダウンフィールドを実装しようとしています。ただし、フォームをレンダリングしようとすると、「AttributeError、'str'オブジェクトに属性'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)
次に、上記のルックアップテーブルを指す外部キーフィールドを含む顧客モデルと関連する顧客請求情報モデルフォームがあります。
# 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でエラーが発生していることを示しています。
私がここで間違っていることを誰かが見ていますか?助けてくれて本当にありがとうございます。