Python ';getattr():属性名称必须是字符串';带有ImageField的模型的管理面板出错
我已设置以下模型:Python ';getattr():属性名称必须是字符串';带有ImageField的模型的管理面板出错,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我已设置以下模型: class UserProfile(models.Model): "Additional attributes for users." url = models.URLField() location = models.CharField(max_length=100) user = models.ForeignKey(User, unique=True) avatar = models.ImageField(upload_to='/h
class UserProfile(models.Model):
"Additional attributes for users."
url = models.URLField()
location = models.CharField(max_length=100)
user = models.ForeignKey(User, unique=True)
avatar = models.ImageField(upload_to='/home/something/www/avatars', height_field=80, width_field=80)
def __unicode__(self):
return "Profile of " + self.user.username
它应该存储关于用户的附加信息,例如化身
不幸的是,当我试图通过管理面板上传图像时,它会给我一个错误,比如:
getattr(): attribute name must be string
当我从模型中删除该字段,执行db重置并重新加载服务器时,不会生成该字段。我想原因是这个特殊的领域,只是不知道如何
这是我的回溯:
File "/usr/lib/pymodules/python2.6/django/core/handlers/base.py" in get_response
92. response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/pymodules/python2.6/django/contrib/admin/options.py" in wrapper
226. return self.admin_site.admin_view(view)(*args, **kwargs)
File "/usr/lib/pymodules/python2.6/django/views/decorators/cache.py" in _wrapped_view_func
44. response = view_func(request, *args, **kwargs)
File "/usr/lib/pymodules/python2.6/django/contrib/admin/sites.py" in inner
186. return view(request, *args, **kwargs)
File "/usr/lib/pymodules/python2.6/django/db/transaction.py" in _commit_on_success
240. res = func(*args, **kw)
File "/usr/lib/pymodules/python2.6/django/contrib/admin/options.py" in add_view
718. new_object = self.save_form(request, form, change=False)
File "/usr/lib/pymodules/python2.6/django/contrib/admin/options.py" in save_form
551. return form.save(commit=False)
File "/usr/lib/pymodules/python2.6/django/forms/models.py" in save
407. fail_message, commit, exclude=self._meta.exclude)
File "/usr/lib/pymodules/python2.6/django/forms/models.py" in save_instance
65. f.save_form_data(instance, cleaned_data[f.name])
File "/usr/lib/pymodules/python2.6/django/db/models/fields/files.py" in save_form_data
283. setattr(instance, self.name, data)
File "/usr/lib/pymodules/python2.6/django/db/models/fields/files.py" in __set__
316. self.field.update_dimension_fields(instance, force=True)
File "/usr/lib/pymodules/python2.6/django/db/models/fields/files.py" in update_dimension_fields
368. (self.width_field and not getattr(instance, self.width_field))
Exception Type: TypeError at /admin/proj/userprofile/add/
Exception Value: getattr(): attribute name must be string
问题可能在于:
height_field=80, width_field=80
height\u field
和width\u field
(如果您使用)应该是模型上包含高度和宽度信息的字段的名称。解决这个问题应该是可行的。您的问题在于高度\字段=80
和宽度\字段=80
这些字段不应该包含您需要的高度和宽度,而应该包含模型中可以保存高度和宽度值的字段名称
如Django文档中所述,这些是模型上的属性,在保存模型时将为您填充这些属性。如果要为您填充此信息,请使用“创建模型”属性来存储此信息,否则只需删除这些属性即可,它们是可选的