django - "QuerySet' - Objekt hat kein Attribut 'user'
Habe ich zwei Modelle Profil und Avatar.
models.py
class Profile(models.Model):
user = models.ForeignKey(User)
profile_name = models.CharField(blank=True, max_length=50)
def __unicode__(self):
return u'%s %s' % (self.user, self.profile_name)
class Avatar(models.Model):
user = models.ForeignKey(User)
paths = models.CharField(max_length=100)
def __unicode__(self):
return u'%s %s' % (self.user,self.paths)
Möchte ich eine Suche auf der profile_name
Feld (aus Profil-Modell) und erhalten Sie die Pfade zu den Bildern gespeichert, die auf dem Gebiet paths
(aus dem Avatar-Modell).
view.py
profile_name_search = Profile.objects.filter(profile_name=usr_name)
user_avatar = Avatar.objects.filter(user=profile_name_search.user.id)
usr_name
variable übergeben von einem Formular eingereicht.
Für einige Grund, warum ich immer diese Fehlermeldung:
'QuerySet' object has no attribute 'user'
user_avatar = Avatar.objects.filter(user=profile_name_search.user.id)
Alle ides?
InformationsquelleAutor avatar | 2011-10-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
filter()
gibt eineQuerySet
auch wenn nur ein Objekt, wenn gefunden. Wenn Sie zurückkehren möchten, nur eine Modell-Instanz verwendenget()
:Wenn Sie erwarten, dass mehr als ein zurückgegeben werden, verwenden Sie
filter()
. Wenn Sieget()
und mehr als eine Instanz gefunden wird, wird die AusnahmeMultipleObjectsReturned
angehoben werden. Siehe die django-DokumentationInformationsquelleAutor Bernhard Vallant
Denken Sie daran, dass Sie "filter" liefert eine query kein Modell. Ist-Profil-Namen suchen zurückgeben sollte, möglicherweise mehrere Benutzer? Wenn dem so ist, ich denke, Sie wollen:
Ansonsten können Sie möchten:
Wenn es nur ein avatar pro user können Sie ein OneToOneField von Avatar auf Profil, und dann nur noch Zugriff als Profil.avatar.
InformationsquelleAutor shaunc