1

私はこれを数日間にわたって何時間も理解しようとしてきましたが、うまくいきません。私はどこにでも行ってきました。私はそれを理解しようとし続けますが、より迅速な解決を望んでいました。App Engine データストア + Django を使用しています。

ビューとカスタム フォームでクエリを使用すると、フォームにリストを取得できましたが、投稿できませんでした。Djangoフォームの一部として選択肢を動的に追加する方法を見つけようとしています...さまざまな方法を試しましたが、成功しませんでした。ヘルプ!

以下は2つのモデルです。InfoForm の場所フィールドに表示する address_id の個別のリストを取得したいと考えています。このフィールドには同じ名前を付けることもできます (また、同じ名前にする必要があるかもしれません) が、別の名前を付けた方が簡単だと思いました。

class Info(db.Model):
    user = db.UserProperty()
    location = db.StringProperty()
    info = db.StringProperty()
    created = db.DateTimeProperty(auto_now_add=True)
    modified = db.DateTimeProperty(auto_now=True)

class Locations(db.Model):
    user = db.UserProperty()
    address_id = db.StringProperty()
    address = db.StringProperty()

class InfoForm(djangoforms.ModelForm):
    info = forms.ChoiceField(choices=INFO_CHOICES)
    location = forms.ChoiceField()
    class Meta:
            model = Info
            exclude = ['user','created','modified']
4

1 に答える 1

1

私は App Engine Datastore に詳しくありませんが、おそらく次のようなことをしたいと思うでしょう。

class InfoForm(djangoforms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(InfoForm, self).__init__(*args, **kwargs)
        choices = [(r.id, r.info) for r in Info.objects.filter(...)]
        self.fields['info'] = ChoiceField(choices=choices)

動的に割り当てることにより、次の行をクラスinfoから除外します。InfoForm

    info = forms.ChoiceField(choices=INFO_CHOICES)
于 2009-02-02T18:15:45.533 に答える