我试图在Django中获取某个对象的id,但我一直得到以下错误:
异常值:QuerySet;对象没有属性ID。
我在 www.example.com
@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')
错误发生在此部分的if条件(attachedInfo=at.id
)中。我检查了一下,当我把它从条件下删除时,一切都开始工作正常。
这里是 www.example.com
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
谁能帮我理解为什么我得到这个错误?!
4条答案
按热度按时间f0ofjuux1#
这行代码
at = AttachedInfo.objects.filter(attachedMarker=m.id, title=title)
返回queryset
并且您正在尝试访问它的一个字段(该字段不存在)。
你可能需要
k2arahey2#
你得到错误的原因是因为
at
是QuerySet
ie:你可以做一些类似at[0].id
的事情,或者使用get
而不是filter
来获取at
对象。希望有帮助!
py49o6xq3#
在大多数情况下,您不希望像这样处理不存在的对象。而不是
使用
这是推荐的Django快捷方式。
y53ybaqx4#
我得到了这个错误几乎2天,这个错误的主要问题完全取决于两个文件i。e.
www.example. com & www.example.com
我得到这个错误,因为我想从电子邮件ID创建会话,但它显示他们没有属性电子邮件,所以它没有获取任何str对象。
解决方案:-
models.py
根据您的项目,为您希望从中获取数据的以下内容创建字符串。
views.py
对Model使用.first()方法。对象方法这已经解决了我的问题,希望它也能解决你的问题。