'getattr(): Attribut Bezeichnung muss die Zeichenfolge' error in admin-panel für ein Modell mit einem ImageField
Habe ich das folgende Modell aufgestellt:
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
Soll das speichern von zusätzlichen Informationen zu einem Benutzer, zum Beispiel ein avatar.
Leider, wenn ich versuche ein Bild hochzuladen über die admin-panel, es gibt mir eine Fehlermeldung, so etwas wie:
getattr(): attribute name must be string
Die nicht produziert, wenn ich entfernen Sie das Feld aus dem Modell ein db-reset und laden der server. Ich könnte mir vorstellen, dass die Ursache in diesem Bereich nur nicht sicher, wie.
Dies ist mein traceback:
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
InformationsquelleAutor cwj | 2009-11-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist mit
height_field=80
undwidth_field=80
diese sollte nicht enthalten die Höhe und Breite, die Sie benötigen, sondern die Namen der Felder in Ihrem Modell, können die Werte für Höhe und Breite speichern in Ihnen.Wie erklärt, in der Django-Dokumentation für die ImagedField diese sind Attribute, die auf Ihr Modell, die für Sie aufgefüllt werden, wenn das Modell gespeichert wird. Wenn Sie möchten, dass diese Informationen für Sie aufgefüllt der Erstellung von Modell-Attribut, wo diese Informationen gespeichert werden können, sonst einfach entfernen Sie diese Attribute sind optional.
InformationsquelleAutor Tendayi Mawushe
Das problem ist vermutlich dieses:
height_field
undwidth_field
, wenn Sie Sie verwenden, sollen Sie die Namen der Felder auf dem Modell enthalten, die die Höhe und Breite Informationen. Dieses Problem beheben, sollte es funktionieren.InformationsquelleAutor Daniel Roseman