我有以下型号
class Person(models.Model):
name = models.CharField(max_length=100)
class Employee(Person):
job = model.Charfield(max_length=200)
class PhoneNumber(models.Model):
person = models.ForeignKey(Person)
如果我有员工ID,如何访问与员工关联的PhoneNumbers?
目前我正在使用
phones = PhoneNumbers.objects.filter(person__id=employee.id)
它的工作原理只是因为我知道employee.id和person.id是相同的值,但我确信这是不正确的方法。
感谢
安德鲁
答案 0 :(得分:5)
您可以(并且应该)在不知道外键字段的情况下进行过滤:
PhoneNumber.objects.filter(employee=your_employee).all()
答案 1 :(得分:4)
你可以这样做:
employees = Employee.objects.filter(id=your_id).select_related()
if employees.count() == 1:
phone_numbers = employees[0].phonenumber_set.all()
这应该可以在一个数据库查询中获取所有电话号码。
默认情况下,您可以通过使用“全部小写的模型名称”,然后使用“_set”来访问“对面”侧的外键相关的模型。您可以通过设置外键的相关名称属性来更改该访问者的名称。