Django在外键列中显示对象引用
我的models.py中定义了两个类: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
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最用户友好的特性。。。