django-selectableを使用していて、カテゴリのIDを表す "id"( 'autocomplete_1')をテンプレートから保存するのに問題があります。django-selectable - テンプレートからデータを保存できません
models.py
class Category(models.Model):
cat_no = models.IntegerField(null=True, blank=True)
cat_txt = models.CharField(max_length=45)
def __unicode__(self):
return self.cat_txt
class Cattest(models.Model):
category = models.ForeignKey(Category)
info = models.CharField(max_length=35, blank=True)
class CategoryLookup(ModelLookup):
model = Category
search_fields = ('cat_txt__icontains',)
forms.py lookups.py
class CategoryForm(forms.Form):
autocomplete = forms.CharField(
label='Type the name of a category (AutoCompleteWidget)',
widget=selectable.AutoCompleteWidget(CategoryLookup),
required=False,
)
autocompleteselect = selectable.AutoCompleteSelectField(
lookup_class=CategoryLookup,
label='Select a category (AutoCompleteField)',
required=False,
)
class CattestForm(forms.Form):
#model = cattest
#fields = ('category', 'info')
autocomplete = forms.CharField(
label='Type the name of a category (AutoCompleteSelectWidget)',
widget=selectable.AutoCompleteSelectWidget(CategoryLookup),
required=False,
)
info = forms.CharField(max_length=35, label="Information")
views.py
def cattest(request):
if request.method == 'POST':
form = CattestForm(request.POST)
if form.is_valid():
cattest = Cattest.objects.create(
category=form.cleaned_data['autocomplete_1'],
info=form.cleaned_data['info'],
)
# Always redirect after a POST
return http.HttpResponseRedirect('/bsmain/login_customer')
else:
if request.GET:
form = CattestForm(initial=request.GET)
else:
form = CattestForm()
return render_to_response('bsmain/form.html', {'form': form}, context_instance=RequestContext(request))
トレースバック:POST リクエストURL:http://127.0.0.1:8000/bsmain/cattest/ Djangoのバージョン:1.3.1 例外の種類:KeyError例外 例外値/ bsmain/cattest/
'autocomplete_1'
リクエストメソッドで
KeyError例外:
'autocomplete_1'
例外の場所:/ home/cattest中/ boatsite /../ boatsite/bsmain/views.py紙幣/ワークスペース、ライン64 Pythonの実行します。/ usr/bin/pythonの Pythonのバージョン:2.6.5
リクエスト情報
GETありませんデータ POST変数値
info u'44# Bruce'
csrfmiddlewaretoken u'9ffe49bd68be04087521e71e86a5bec0'
autocomplete_1 u'10'
autocomplete_0 u'Anchors'
マーク - 私の前にあることを試してみました。私はエラーが発生します:ValueError/bsmain/cattest/ "u" 'を割り当てることはできません: "Cattest.category"は "Category"インスタンスでなければなりません。 – BillB1951
..if私はform.cleaned_data ['category']を使用します。私は/ bsmain/cattest/ でKeyErrorを取得します。 'カテゴリ'私はdjango-selectableがすばらしいアプリだと思っています。 – BillB1951
現在のフォームに関連するいくつかの問題があります。 'autocomplete'は必須ではありませんが、カテゴリには入れたいです。また、最初のコメントメモとして正しいタイプが返されません。 ModelFormを使った例を追加しました。ありがとうございます。 –