1

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でエラーが発生していることを示しています。

私がここで間違っていることを誰かが見ていますか?助けてくれて本当にありがとうございます。

4

1 に答える 1

3

変化する:

country = forms.ModelChoiceField(queryset='Country.objects.all()',
    empty_label=None)

に:

country = forms.ModelChoiceField(queryset=Country.objects.all(),
    empty_label=None)
于 2013-02-15T18:50:51.100 に答える