0

そのため、フォームウィザードは完全に機能していましたが、2 つのことを変更したところ、InternalErrorデータベース エラーが発生しました。まず、 を使用してテンプレートを指定しget_template_namesました。

フォーム.py:

TEMPLATES = {'0': 'formtools/wizard/wizard_form.html',
             '1': 'formtools/wizard/wizard_form.html',
             '2': 'formtools/wizard/wizard_map.html'}

class CreateWizard(SessionWizardView):
    get_template_names(self):
        return [TEMPLATES[self.steps.current]]

次に、FloatFields保存するモデルとフォーム自体に以下を追加しました。

class Thing(models.Model):
    ....
    latitude = models.FloatField()
    longitude = models.FloatField()
    ....

class StepThreeForm(forms.Form):
    ....
    latitude = forms.FloatField()
    longitude = forms.FloatField()
    ....

を受け取っている理由がわかりませんInternalError: current transaction is aborted, commands ignored until end of transaction block。トレースバックは次のとおりです。

File "/myapp/lib/python2.7/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/myapp/lib/python2.7/django/contrib/auth/decorators.py" in _wrapped_view
  20.                 return view_func(request, *args, **kwargs)
File "/myapp/lib/python2.7/django/views/generic/base.py" in view
  48.             return self.dispatch(request, *args, **kwargs)
File "/myapp/lib/python2.7/django/contrib/formtools/wizard/views.py" in dispatch
  223.         response = super(WizardView, self).dispatch(request, *args, **kwargs)
File "/myapp/lib/python2.7/django/views/generic/base.py" in dispatch
  69.         return handler(request, *args, **kwargs)
File "/myapp/lib/python2.7/django/contrib/formtools/wizard/views.py" in post
  286.                 return self.render_done(form, **kwargs)
File "/myapp/lib/python2.7/django/contrib/formtools/wizard/views.py" in render_done
  328.         done_response = self.done(final_form_list, **kwargs)
File "/myapp/myproject/myapp/forms.py" in done
  82.       instance.save()
File "/myapp/myproject/myapp/models.py" in save
  112.         super(Thing, self).save()
File "/myapp/lib/python2.7/django/db/models/base.py" in save
  463.         self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/myapp/lib/python2.7/django/db/models/base.py" in save_base
  551.                 result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
File "/myapp/lib/python2.7/django/db/models/manager.py" in _insert
  203.         return insert_query(self.model, objs, fields, **kwargs)
File "/myapp/lib/python2.7/django/db/models/query.py" in insert_query
  1593.     return query.get_compiler(using=using).execute_sql(return_id)
File "/myapp/lib/python2.7/django/db/models/sql/compiler.py" in execute_sql
  910.             cursor.execute(sql, params)

Exception Type: InternalError at /
Exception Value: current transaction is aborted, commands ignored until end of transaction block

ウィザードのステップ 3 でテンプレートを追加するとともに、変更したのはこれら 2 つのみです。これによりウィザードの機能が変更される理由がわかりません。このエラーが発生する理由を理解するのを手伝ってもらえますか? この紛らわしい問題についてのアイデアをありがとう!


編集:これらのフィールドを追加した後、南経由でスキーマを更新しました。さらに、DecimalField代わりに使用しようとしFloatFieldましたが、まだdbエラーが発生しました。

4

0 に答える 0