很抱歉。我也很惊讶我找不到这个问题。 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)
答案 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。