0

基になるテーブルから入力されたドロップダウンがありますが、レンダリング時にドロップダウンで値が選択されていないか、「-------」が表示されます。言うまでもなく、「------」はどのテーブル行にも対応しません。

コードは次のとおりです。

class CompanyCategory(db.Model):
    categoryname = db.StringProperty(required=False)

    def __unicode__(self):
            return u'%s' % (self.categoryname)

class SelectCategoryForm(djangoforms.ModelForm):
    class Meta:
            model = SelectCat

コードは、html のこのコードでレンダリングされます

{ form.companycategory }}

エラーは次のとおりです。

Traceback (most recent call last):
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py", line 703, in __call__
    handler.post(*groups)
  File "/base/data/home/apps/s~biomapit/1.359892355004556500/showcompanies.py", line 163, in post
    mycategoryid = [form_requirements.clean_data['companycategory'].key().id()]
AttributeError: 'NoneType' object has no attribute 'key'

ドロップダウンがレンダリングされるときに、デフォルトを変更したり、「-----」を削除したりするにはどうすればよいですか。categoryname = db.StringProperty(required=False)行をに変更しても違いはありませんcategoryname = db.StringProperty(required=True)

1つの応答に続く追加の試みとして、私は試しました:

class SelectCategoryForm(djangoforms.ModelForm):    
    class Meta:
            model = SelectCat
    def __init__(self, *args, **kwargs):
            super(SelectCategoryForm, self).__init__(*args, **kwargs)
            modelchoicefields = [field for field_name, field in self.fields.iteritems() if isinstance(field, forms.ModelChoiceField)]
            for field in modelchoicefields:
                field.empty_label = None

無駄に-私はまだ「-----」を取得します。

4

1 に答える 1

1

empty_labelを探していると思います

# A custom empty label
field1 = forms.ModelChoiceField(queryset=..., empty_label="(Nothing)")

# No empty label
field2 = forms.ModelChoiceField(queryset=..., empty_label=None)

これはあなたをもっと助けます。

于 2012-06-26T09:44:14.240 に答える