python - “ImageField”对象没有属性“_committed”
问题描述
我正在尝试从 django 管理面板将数据添加到模型类。单击“保存”按钮后,我收到此错误:
AttributeError at /admin/filmapp/movies/add/
'ImageField' object has no attribute '_committed'
我尝试了这个解决方案,但不幸的是它对我不起作用: 覆盖保存方法 - 'ImageFile' 对象没有属性 '_committed'
这是我的代码:admin.py
from django.contrib import admin
from .models import Movies
admin.site.register(Movies)
模型.py
class Movies(models.Model):
title = models.CharField(max_length=50, null=True, blank=False)
year = models.PositiveIntegerField(null=True, blank=False)
description = models.TextField(null=True, blank=False)
rating = models.FloatField(null=True, blank=True)
img = models.ImageField(upload_to='static/img')
url = models.CharField(max_length=1000, null=True, blank=False)
img_video = models.ImageField(upload_to='static/img/imgvideo', default=img)
这是完整的追溯:
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/admin/filmapp/movies/add/
Django Version: 3.1.7
Python Version: 3.8.5
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'filmapp.apps.FilmappConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback (most recent call last):
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/contrib/admin/options.py", line 614, in wrapper
return self.admin_site.admin_view(view)(*args, **kwargs)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/utils/decorators.py", line 130, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/contrib/admin/sites.py", line 233, in inner
return view(request, *args, **kwargs)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/contrib/admin/options.py", line 1653, in add_view
return self.changeform_view(request, None, form_url, extra_context)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/utils/decorators.py", line 43, in _wrapper
return bound_method(*args, **kwargs)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/utils/decorators.py", line 130, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/contrib/admin/options.py", line 1534, in changeform_view
return self._changeform_view(request, object_id, form_url, extra_context)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/contrib/admin/options.py", line 1580, in _changeform_view
self.save_model(request, new_object, form, not add)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/contrib/admin/options.py", line 1093, in save_model
obj.save()
File "/home/cristian/PycharmProjects/filmorix/filmproject/filmapp/models.py", line 18, in save
super(Movies, self).save(*args, **kwargs)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/db/models/base.py", line 753, in save
self.save_base(using=using, force_insert=force_insert,
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/db/models/base.py", line 790, in save_base
updated = self._save_table(
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/db/models/base.py", line 895, in _save_table
results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/db/models/base.py", line 933, in _do_insert
return manager._insert(
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/db/models/query.py", line 1254, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1396, in execute_sql
for sql, params in self.as_sql():
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1339, in as_sql
value_rows = [
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1340, in <listcomp>
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1340, in <listcomp>
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1291, in pre_save_val
return field.pre_save(obj, add=True)
File "/home/cristian/Anaconda3/lib/python3.8/site-packages/django/db/models/fields/files.py", line 305, in pre_save
if file and not file._committed:
Exception Type: AttributeError at /admin/filmapp/movies/add/
Exception Value: 'ImageField' object has no attribute '_committed'
解决方案
推荐阅读
- react-native - 汉堡包图标拒绝在 react-native 中显示
- angular - 我应该在角度模板中使用类实例方法吗
- c# - 从数据表中获取单元格
- angular - 如何使用 Angular 8 修复滚动标题?
- android - 是否可以在仪器测试中将启用设置为 ConstraintLayout?
- c# - 如何修复丢失的 vcruntime140 clr 400 dll 错误
- python - Numba cuda:使用共享内存添加数字会导致覆盖
- c# - 如何使用 System.Management.Automation
- git - Git无法解析交互式rebase上的“reword”命令
- javascript - 使用上下文映射鼠标坐标