'QuerySet' - Objekt hat kein Attribut FEHLER, zu versuchen, um Verwandte Daten auf ManyToMany-Felder
habe ich die folgenden Modelle:
class Tag(models.Model):
tag_name = models.CharField(max_length=250)
tagcat = models.ForeignKey('TagCat')
class Subject(models.Model):
user = models.ManyToManyField(User)
tags = models.ManyToManyField(Tag)
class TagCat(models.Model):
cat_name = models.CharField(max_length=100)
Also ich habe ein Thema, das ein tag. Ich will eine Schleife die Themen und Ihre entsprechenden tags, so dass ich versuche zu konstruieren, die Rechte Ansicht. Bisher habe ich:
def home(request):
user1 = Subject.objects.filter(id=1)
print(user1.tags.all())
Ich würde erwarten, um die tags der Benutzer über diese print-Anweisung, sondern ich bekomme Fehler
'QuerySet' - Objekt hat kein Attribut 'tags'
Wie würde ich den "Betreff" - Objekte mit Ihrer jeweiligen tags und übergeben Sie an der Vorlage?
(Im Idealfall alle Fächer. Ich habe es mit nur einer hier, zu vereinfachen den Prozess der Fehlerbehebung)
InformationsquelleAutor mgPePe | 2010-11-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
filter
gibt eineQuerySet
(wie Sie vielleicht schon erraten haben), Sie wollenget
stattWenn die
Subject
nicht vorhanden ist, erhalten Sie eineSubject.DoesNotExist
Ausnahme. Es gibt auch dieget_object_or_404
Verknüpfung indjango.shortcuts
, das nützlich ist, wenn Sie einfach nur greifen ein Objekt, das angezeigt werden soll, in gewisser Weise, und Sie möchten, um wieder eine 404, wenn es nicht verfügbar ist.Aber
filter
nicht wirklich Sie die Benutzer, so bekommt Sie eine andereQuerySet
beschreibt einige Kriterien zu wählen, eine Reihe vonSubject
s aus Ihrer Gruppe von Objekten (Subject.objects
). Betrachten Sie es als die Differenz zwischen einer Tabelle und einer Zeile innerhalb der Tabelle.QuerySet
s beschreiben Tabellen, in denen die Objekte, die Zeilen sind. In Ihrem Fall, IhrQuerySet
ist nur ein ein-Zeilen-Tabelle.get
identifiziert eindeutig ein Objekt aus der objektmenge und gibt dieses Objekt zurück, anstatt eine einzelne Zeile der Tabelle.hm...Mehr oder weniger ich es bekommen. Bekomme aber scheint Rückfahrt nur 1 Punkt, da bekomme ich "'Subjekt', das Objekt ist nicht durchsuchbar". Dies ist der primäre Grund, warum ich gewechselt, filter, filter gab mir etwas, was ich konnte-Schleife. Nun, ich verstehe die filter falsch ist, für die Zwecke, wie bekomme ich die 'get', um viele Themen und deren tags?
Möchten Sie mehrere Dinge, die Sie verwenden
filter
, und dann kann man Durchlaufen.for user in Subject.objects.filter([your filter criteria]):
wird Ihnen eineSubject
- Objekt in dasuser
variable, die für jede iteration. Diese variable wird über alle Attribute, die Sie suchen!Genial! habe es zu arbeiten, es ist wunderbar! Du bist auch wundervoll.
InformationsquelleAutor Daniel DiPaolo
QuerySet.get()
wird, kehren Sie entweder ein einzelnes Modell, wie die Kriterien übergeben, oder es wird eine Ausnahme ausgelöst.InformationsquelleAutor Ignacio Vazquez-Abrams