AttributeError:type对象没有django模型的属性

时间:2016-06-06 16:59:28

标签: django-models

以下是模型:

class Teacher(models.Model):
    login = models.CharField(max_length=10, primary_key=True)
    fname = models.CharField(max_length=30)
    mname = models.CharField(max_length=30)
    lname = models.CharField(max_length=30)
class Course(models.Model):
    semester = models.ForeignKey(Semester, on_delete=models.CASCADE)
    title = models.CharField(max_length=40)
    teachers = models.ManyToManyField(Teacher.login, through='TeacherCourse')
    credits = models.IntegerField()
    numberEnrolled = models.IntegerField()
    nomenclature = models.CharField(max_length=128)
    lectures = models.IntegerField()

class TeacherCourse(models.Model):
    teacher = models.ForeignKey(Teacher.login, on_delete=models.CASCADE)
    course = models.ForeignKey(Course, on_delete=models.CASCADE)
    allotedLectures = models.IntegerField()

刚刚将这些添加到新项目并尝试运行服务器。我得到以下内容:

AttributeError:type对象'Teacher'没有属性'login'

我错过了一些明显的东西?

2 个答案:

答案 0 :(得分:1)

我后来在Uday Bhatye的回答中发现了你的错误:

teacher = models.ForeignKey(Teacher.login, on_delete=models.CASCADE)

是django中的语法错误。

你应该这样做:

teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE)

并引用分配给特定TeacherCourse的教师的登录状态:

teachercourse = TeacherCourse.objects.filter(id=teachercourse_id).select_related('teacher')
login_status = course.teacher.login

使用select_related点击数据库一次,并获取分配给TeacherCourse的所有教师的登录状态。

答案 1 :(得分:0)

由于教师模型中的登录字段已被声明为主键,因此我无需在其他两个模型中将其引用为Teacher.login。仅作为教师参考就足够了。