Я создал модель с django.db.models.ModelAttributeError __exit__ при попытке сохранить model.db из формы в Django 1.7
class MyModel(models.Model):
my_field = models.CharField(max_length=50)
и форму с помощью django.forms.ModelForm.
class MyModelForm(ModelForm):
class Meta:
model = MyModel
exclude = []
Из-за ту предыдущей проблемой overidding инициализации, когда я не должен иметь, я модульное тестирование, что MyModel.save() работал. Таким образом, единичный тест проходит. Я также могу заполнить базу данных сценарием init, поэтому я не думаю, что есть проблемы с моей моделью. Но я не могу его сохранить, когда вы вводите данные из формы.
Это код, я использую, чтобы восстановить свой объект из формы:
if request.method == 'POST':
form = MyModelForm(request.POST)
if form.is_valid():
my_model_object = form.save()
return render(request, 'validate.html')
else:
form = MyModelForm()
return render(request, 'create_mymodel.html',
{'form': form})
Infortunately, когда я звоню сохранить() Я получаю следующее сообщение об ошибке:
my_project/views/views.py in my_function
my_model_object = form.save()
...django/db/models/base.py in save
force_update=force_update, update_fields=update_fields)
...django/db/models/base.py in save_base
self._save_parents(cls, using, update_fields)
...django/db/models/base.py in _save_parents
self._save_table(cls=parent, using=using, update_fields=update_fields)
...django/db/models/base.py in _save_table
result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
...django/db/models/base.py in _do_insert
using=using, raw=raw)
...django/db/models/manager.py in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
...django/db/models/query.py in _insert
return query.get_compiler(using=using).execute_sql(return_id)
...django/db/models/sql/compiler.py in execute_sql
with self.connection.cursor() as cursor:
AttributeError at my_url/
__exit__
Request Method: POST
Request URL: http://localhost:8000/my_url/
Django Version: 1.7
Exception Type: AttributeError
Exception Value: __exit__
Это работает, если я использую save (commit = False), но, конечно, мой объект не находится в базе данных. Я также попытался использовать все атрибуты в форме и создать экземпляр и сохранить MyModel, но он тоже не работает. На самом деле, если я попытаюсь сохранить его в любой момент, я получу ошибку. Я основывал свой код на https://docs.djangoproject.com/en/1.7/topics/forms/modelforms/.
Любые предложения?
Вместо прозаического «У меня есть« AttributeError __exit__ », идущий весь путь» ... вы должны вставить трассировку. Это было бы более полезно. – glglgl
Извините, очень верно, я добавил stacktrace, надеюсь эта помощь. –
Хотя очень дикое предположение, единственное, что я вижу немного, это то, что атрибут 'exclude' - пустой список. Попробуйте изменить это на 'fields =" __all __ "' – karthikr