AttributeError: Django Model has no attribute 'instructor_name'
AttributeError: Django Model has no attribute 'instructor_name'
试图找出我在这里遇到属性错误的原因。我之前在 Django 教程中做过同样的过程,但在这里,我使用相同的逻辑得到了一个属性错误。
from django.db import models
from django.utils import timezone
# Create your models here.
class Department(models.Model):
department_name = models.CharField(max_length=100)
def __str__(self):
return self.department_name
class Instructor(models.Model):
belongs_to = models.ForeignKey(Department, on_delete=models.CASCADE)
instructor_name = models.CharField(max_length=100)
def __str__(self):
return self.instructor_name
就像 Django 的文档教程一样,我试图在 python shell 中输出一个空查询集。当我创建数据并将其保存到数据库中时,我返回并使用 d = Department.objects.get(pk=1)
将数据分配给一个对象 我得到了所需的输出,因为我可以调用 d.department_name
并且它将输出名称我最初分配它。当我以教程对 q.choice_text.all()
的方式调用 d.instructor_name.all()
时,我没有返回一个空查询集,而是这个错误:
<ipython-input-18-29fd5cce7e1e> in <module>()
----> 1 d.instructor_name.all()
AttributeError: 'Department' object has no attribute 'instructor_name'
不太确定我在这里做了什么不同的事情。我读过其他有类似问题的帖子,但他们总是做一些略有不同的事情,我似乎无法将他们学到的知识应用到我的问题上。
参考教程如下:https://docs.djangoproject.com/en/3.0/intro/tutorial02/
简答:试试
d.instructor_set.all()
长答案:
django 在两个由外键连接的模型之间创建反向 link 的方法是在没有外键的模型中创建一个新属性(在本例中为 Department)。属性名称是 model name in lowercase
_set
所以,如果你有一个部门对象d,获取属于该部门的所有检查员的方法是
d.instructor_set.all()
旁注:我认为是您的属性名称导致了问题。而不是“department_name”和“instructor_name”我会简单地使用“name",这样当你想打印部门名称时,只需说 "department.name" 即可读。
另外 d.inspector_name.all() 将更改为 d.name.all(),这很容易被检测为错误。
试图找出我在这里遇到属性错误的原因。我之前在 Django 教程中做过同样的过程,但在这里,我使用相同的逻辑得到了一个属性错误。
from django.db import models
from django.utils import timezone
# Create your models here.
class Department(models.Model):
department_name = models.CharField(max_length=100)
def __str__(self):
return self.department_name
class Instructor(models.Model):
belongs_to = models.ForeignKey(Department, on_delete=models.CASCADE)
instructor_name = models.CharField(max_length=100)
def __str__(self):
return self.instructor_name
就像 Django 的文档教程一样,我试图在 python shell 中输出一个空查询集。当我创建数据并将其保存到数据库中时,我返回并使用 d = Department.objects.get(pk=1)
将数据分配给一个对象 我得到了所需的输出,因为我可以调用 d.department_name
并且它将输出名称我最初分配它。当我以教程对 q.choice_text.all()
的方式调用 d.instructor_name.all()
时,我没有返回一个空查询集,而是这个错误:
<ipython-input-18-29fd5cce7e1e> in <module>()
----> 1 d.instructor_name.all()
AttributeError: 'Department' object has no attribute 'instructor_name'
不太确定我在这里做了什么不同的事情。我读过其他有类似问题的帖子,但他们总是做一些略有不同的事情,我似乎无法将他们学到的知识应用到我的问题上。
参考教程如下:https://docs.djangoproject.com/en/3.0/intro/tutorial02/
简答:试试
d.instructor_set.all()
长答案:
django 在两个由外键连接的模型之间创建反向 link 的方法是在没有外键的模型中创建一个新属性(在本例中为 Department)。属性名称是 model name in lowercase
_set
所以,如果你有一个部门对象d,获取属于该部门的所有检查员的方法是
d.instructor_set.all()
旁注:我认为是您的属性名称导致了问题。而不是“department_name”和“instructor_name”我会简单地使用“name",这样当你想打印部门名称时,只需说 "department.name" 即可读。
另外 d.inspector_name.all() 将更改为 d.name.all(),这很容易被检测为错误。