Django在外键列中显示对象引用

Django在外键列中显示对象引用,django,Django,我的models.py中定义了两个类: class Job(models.Model): job_id = models.CharField(primary_key=True, max_length=10) job_title = models.CharField(max_length=35) min_salary = models.IntegerField(blank=True, null=True) max_salary = models.IntegerFie

我的models.py中定义了两个类:

class Job(models.Model):
    job_id = models.CharField(primary_key=True, max_length=10)
    job_title = models.CharField(max_length=35)
    min_salary = models.IntegerField(blank=True, null=True)
    max_salary = models.IntegerField(blank=True, null=True)
    class Meta:
        managed = False
        db_table = 'jobs'
    def __str__(self):
        return self.job_id

class Employee(models.Model):
    employee_id = models.IntegerField(primary_key=True)
    first_name = models.CharField(max_length=20, blank=True)
    last_name = models.CharField(max_length=25)
    email = models.CharField(unique=True, max_length=25)
    phone_number = models.CharField(max_length=20, blank=True)
    hire_date = models.DateField()
    job = models.ForeignKey('Job')
    salary = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
    commission_pct = models.DecimalField(max_digits=2, decimal_places=2, blank=True, null=True)
    manager = models.ForeignKey('self', blank=True, null=True, related_name ='employee')
    department_id = models.IntegerField(blank=True, null=True)
    class Meta:
        managed = False
        db_table = 'employees'
        def __str__(self):
           return self.employee_id
        def __unicode__(self):
           return self.employee_id
问题在于外键,在Employees admin(员工管理)页面上,Job(工作)字段正确显示包含所有可能工作ID的下拉列表,但manager(经理)字段显示的下拉列表中的所有条目都等于“Employees object(员工对象)”。我怀疑这是因为经理是self.employee的外键

我该如何解决这个问题

谢谢。

在您的
员工
模型中添加
\uuuunicode\uuuuuuu()
\uuuuu str\uuuuuuuuu()
方法,就像您在
工作
中所做的那样

class Employee(models.Model):
    def __unicode__(self):
        return self.email #or whatever string you want

此方法用于在django中将对象表示为字符串。

您在
Employee.Meta
类上定义了
\uuu str\uuu
\uuuu unicode\uuu
方法

将它们缩进四个空格,你应该很好:

class Employee(models.Model):
    employee_id = models.IntegerField(primary_key=True)
    first_name = models.CharField(max_length=20, blank=True)
    last_name = models.CharField(max_length=25)
    email = models.CharField(unique=True, max_length=25)
    phone_number = models.CharField(max_length=20, blank=True)
    hire_date = models.DateField()
    job = models.ForeignKey('Job')
    salary = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
    commission_pct = models.DecimalField(max_digits=2, decimal_places=2, blank=True, null=True)
    manager = models.ForeignKey('self', blank=True, null=True, related_name ='employee')
    department_id = models.IntegerField(blank=True, null=True)
    class Meta:
        managed = False
        db_table = 'employees'

    def __str__(self):
       return self.employee_id
    def __unicode__(self):
       return self.employee_id

谢谢你,西蒙,这就解决了。你不会相信我花了多少时间搜索网页,试图找出我做错了什么。也许缩进对齐不是python最用户友好的特性。。。