我有两个数据库表,它们通过CharField
. 例如,要求提供电话号码的调查回复和拥有电话号码的人:
class SurveyResponse(Model):
phone_number = CharField()
favorite_brand_of_soda = CharField()
person = JoinedOneToOneField("Person", from_field="phone_number", to_field="phone_number")
class Person(Model):
phone_number = CharField()
name = CharField()
是否可以创建一个字段(如JoinedOneToOneField
本例中的 ),这将允许我查询Person
与 相关的谁(SurveyResponse
如果存在)?
例如,这样我就可以select_related
用来确保查询是有效的:
>>> responses = SurveyResponse.objects.all().select_related("person")
>>> print [ (r.person.name, r.favorite_brand_of_soda) for r in responses ]
这样我就可以Person
通过属性查找访问相关的:
>>> response = SurveyResponse.objects.get(…)
>>> print response.person.name
我知道它ForeignKey
接受一个to_field=
参数,但这不会完全做到这一点,因为数据库将尝试通过该字段强制执行参照完整性,这与数据模型不一致。
换句话说,类似于 SQLAlchemy 的关系。
请注意:我不想使用FOREIGN KEY
: 我正在处理的记录是纸笔表格,并且不能保证数字会匹配。在你认为我错了之前,请考虑这是一个简化的例子,而且我真的,老实说,知道如何使用一个ForeignKey
字段。