QuerySet, - Objekt hat kein Attribut id - Django
Ich versuche zum abrufen der id des jeweiligen Objekts in django, aber ich bekomme immer folgenden Fehler
Ausnahme Wert: QuerySet; Objekt hat kein Attribut id.
meine Funktion in views.py
@csrf_exempt
def check_question_answered(request):
userID = request.POST['userID']
markerID = request.POST['markerID']
title=request.POST['question']
m = Marker.objects.get(id=markerID)
u = App_User.objects.get(id=userID)
print userID
print markerID
print title
# userID='1'
# markerID='1'
# title='Hello'
at = AttachedInfo.objects.filter(attachedMarker=m.id, title=title)
print 'user'
print u.id
print 'marker'
print m.id
print 'att'
print at
#print at.id
if(Answer.objects.filter(marker=m.id, user=u.id, attachedInfo=at.id)):
print 'pass'
return HttpResponse('already answered')
else:
print 'not'
return HttpResponse('not answered yet')
Tritt der Fehler in der if-Bedingung in diesem Teil (attachedInfo=at.id). Ich habe das, wie wenn ich entfernt es aus der Bedingung, hat alles gut funktioniert.
Hier models.py
class AttachedInfo(models.Model):
title = models.CharField(max_length=200)
helpText = models.CharField(max_length=200, null=True, blank=True)
type = models.CharField(max_length=200)
attachedMarker = models.ForeignKey(Marker)
answer1 = models.CharField(max_length=200, null=True, blank=True)
answer2 = models.CharField(max_length=200, null=True, blank=True)
answer3 = models.CharField(max_length=200, null=True, blank=True)
answer4 = models.CharField(max_length=200, null=True, blank=True)
correctAnswer = models.CharField(max_length=50, null=True, blank=True)
optionalMessage = models.CharField(max_length=200, null=True, blank=True)
def __unicode__(self):
return self.title
class Answer(models.Model):
user = models.ForeignKey(App_User)
app = models.ForeignKey(App, null=True, blank=True)
marker = models.ForeignKey(Marker)
attachedInfo = models.ForeignKey(AttachedInfo)
textAnswer = models.CharField(max_length=200, null=True, blank=True)
mcqAnswer = models.CharField(max_length=200, null=True, blank=True)
answered = models.BooleanField(default=False)
def __unicode__(self):
return self.attachedInfo.title
Jede Hilfe, warum bin ich immer diese Fehlermeldung?!
InformationsquelleAutor omarsafwany | 2013-05-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
diese Codezeile
at = AttachedInfo.objects.filter(attachedMarker=m.id, title=title)
gibt eine queryset
und Sie versuchen, Zugriff auf ein Feld (nicht vorhanden).
was Sie wahrscheinlich brauchen, ist
.filter
amd dann[0]
was bedeutet es zurück, wenn queryset hat 0 Elemente?
Sie müssen überprüfen, ob die leere queryset und dann die [0] das ist das, was ich meinte.
du hast Recht. Ich änderte filter zu bekommen und alles funktioniert Super. habe nicht wirklich gedacht. Ich danke Ihnen sehr
Ok. Aber bewusst sein, dass wenn dort kein Wert, wird es wieder eine Ausnahme.
InformationsquelleAutor EsseTi
Der Grund, warum Sie immer der Fehler ist, da
at
ist einQuerySet
sprich: eine Liste. Sie können etwas tun, wieat[0].id
oder verwenden Sieget
stattfilter
um dieat
Objekt.Hoffe, es hilft!
ich stolperte über diesen und versucht, den filter und "auf[0].id" gibt: 'dict' - Objekt hat kein Attribut 'id'. Vielleicht können Sie das korrigieren?
InformationsquelleAutor Paulo Bu
In den meisten Fällen, die Sie nicht wollen, um nicht vorhandene Objekte. Statt
verwenden
Ist es die empfohlene Django Verknüpfung.
InformationsquelleAutor oberam-eng