Django:访问非唯一字段

时间:2019-03-17 19:35:57

标签: django django-models orm foreign-keys relational-database

很抱歉。我也很惊讶我找不到这个问题。 3,2,1 ...的尴尬...

如何访问另一个模型的非唯一字段?

让我们说我们有2个人和一只宠物,简化为实例化的JSON示例:

Person 1: {
  id: 1,
  first_name: "John",
  last_name: "Doe"
}

Person 2: {
  id: 2,
  first_name: "Jane"
  last_name: "Doe"
}

Pet: {
  id: 1,
  name: "Guess",
  owner_first_name: "{I want person 1's, first_name string value here}",
  owner_last_name: "{I want person 1's, last_name string value here}"
}

我知道对象需要唯一的主键,最常见的是“ id”,但是在使用功能性PK之后,必须有一种方法来访问辅助字段。 我知道models.to_field当前可以访问名字,如果将其设置为unique = True的话。最终,会有另一个“约翰”或“简”,这里已经有两个“母鹿”了。

请原谅语法屠杀以进行简化,但是如何在Django中获得它?

Pet.owner_first_name = Person [id] .first_name(unique = False)

1 个答案:

答案 0 :(得分:0)

如果您在模型中正确定义了关系(Pet中的字段通过Person引用所有者ForeignKey),则可以执行以下操作:

pet = Pet.objects.get(pk=1)
print(pet.owner.first_name, pet.owner.last_name)

换句话说,在将一个模型与另一个模型相关联时,您在引用模型(和相应的数据库表)中保存了对引用模型主键的引用,而不是诸如姓或名的特定属性。

Django docs提供了大量有关使用各种类型关系的示例;您的示例的相关类型为many-to-one relationships