我们假设我们的Person
模型包含email
,bounced
和bounced_date
字段。
我们希望允许用户拥有多个电子邮件地址。我们创建了一个单独的EmailAddress
模型,address
,bounced
,bounced_date
和ForeignKey
字段为Person
。我们使用order_with_respect_to
,因此用户可以按优先顺序排列电子邮件地址。编写迁移需要几行SQL。
我们还在email
模型中定义Person
属性,该属性返回第一个相关address
的{{1}}字段,因此我们不需要制作代码在EmailAddress
对象上使用email
字段的所有地方都进行了更改。
我找不到办法的最后一件事就是找到让Person
仍在工作的方法。 .get(email='example@example.com')
是唯一的,因此每个电子邮件地址仍应附加一个唯一身份用户。
我知道我可以使用EmailAddress
,但如果可能的话,我不想在项目的任何地方更改代码。为了清楚起见,我希望将.get(emailaddress__address='example@example.com')
映射到email
和emailaddres__address
方法中的.get
。
答案 0 :(得分:0)
如果您将EmailAddress ForeignKey上的related_name设置为Person模型
Person.objects.filter(<related_name>__address='example@example.com')[0]
应该给你你想要的东西。
答案 1 :(得分:0)
您无法保持准确的语法,但您可以稍微调整以在相关模型中查找。
.get(emailaddress__email='example@example.com')