1

几天来,我一直试图解决这个问题,但无法让它发挥作用。我到处都是。我会继续尝试解决这个问题,但希望有一个更快的解决方案。我正在使用 App Engine 数据存储区 + Django。

在视图和自定义表单中使用查询,我能够获得表单列表,但随后无法发布。我一直在试图弄清楚如何将选择动态添加为 Django 表单的一部分......我尝试了各种方法但没有成功。帮助!

下面是两个模型。我想获得一个不同的 address_id 列表以显示在 InfoForm 的位置字段中。这些字段可以(并且可能应该)命名相同,但我认为如果它们命名不同会更容易。

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 回答