Python 未解析的属性引用';对象';
在models.py中,我有课程备忘录:Python 未解析的属性引用';对象';,python,django,Python,Django,在models.py中,我有课程备忘录: class Memo(models.Model): MonthName = models.ForeignKey(Months, on_delete=models.CASCADE) ProjectName = models.ForeignKey(Project, on_delete=models.CASCADE) Hours = models.IntegerField(blank=True, null=True) # Pro
class Memo(models.Model):
MonthName = models.ForeignKey(Months, on_delete=models.CASCADE)
ProjectName = models.ForeignKey(Project, on_delete=models.CASCADE)
Hours = models.IntegerField(blank=True, null=True)
# ProjectManager = models.ForeignKey(ItEmployee, on_delete=models.CASCADE)
def __str__(self):
return str(self.MonthName) + ' - ' + str(self.ProjectName)
from django.http import HttpResponse
from History.models import Memo
def memos(request):
all_memos = Memo.objects.all()
html = ''
for memo in all_memos:
url = '/memo/' + str(Memo.MonthName) + '/'
html += '<a href="' + url + '">' + Memo.ProjectName + '</a><br>'
return HttpResponse(html)
在views.py中,我收到了关于类备忘录的未解析属性引用“objects”的警告:
class Memo(models.Model):
MonthName = models.ForeignKey(Months, on_delete=models.CASCADE)
ProjectName = models.ForeignKey(Project, on_delete=models.CASCADE)
Hours = models.IntegerField(blank=True, null=True)
# ProjectManager = models.ForeignKey(ItEmployee, on_delete=models.CASCADE)
def __str__(self):
return str(self.MonthName) + ' - ' + str(self.ProjectName)
from django.http import HttpResponse
from History.models import Memo
def memos(request):
all_memos = Memo.objects.all()
html = ''
for memo in all_memos:
url = '/memo/' + str(Memo.MonthName) + '/'
html += '<a href="' + url + '">' + Memo.ProjectName + '</a><br>'
return HttpResponse(html)
从django.http导入HttpResponse
从History.models导入备忘录
def备忘录(请求):
all_memos=Memo.objects.all()
html=“”
对于所有备忘录中的备忘录:
url='/memo/'+str(memo.MonthName)+'/'
html+='
'
返回HttpResponse(html)
您在for循环中使用大写的Memo
,将类作为一个整体引用,而不是所有备忘录中的Memo
实例。试试这个:
for memo in all_memos:
url = '/memo/' + str(memo.MonthName) + '/'
html += '<a href="' + url + '">' + memo.ProjectName + '</a><br>'
对于所有备忘录中的备忘录:
url='/memo/'+str(memo.MonthName)+'/'
html+='
'
另一方面,您的模型属性通常写为month\u name
,project\u name
等,而不是MonthName
,ProjectName
等。似乎@Yopa对包含Memo.objects.all()的行有问题。他们不会仍然对该行有问题吗?问题当然是试图访问Memo.MonthName
而不是Memo.MonthName
(与ProjectName
相同)。原始海报试图访问对类的引用上的实例级属性,而不是实例本身上的属性。字段也是如此。每个实例或整个类的对象是否存在?正如下面的答案所提到的,混淆很可能来自区分类备忘录和实例(备忘录)