在Django模型中移动字段后,不会破坏.get(fieldname =' match')API

时间:2017-08-02 15:07:58

标签: django django-models

我们假设我们的Person模型包含emailbouncedbounced_date字段。

我们希望允许用户拥有多个电子邮件地址。我们创建了一个单独的EmailAddress模型,addressbouncedbounced_dateForeignKey字段为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')映射到emailemailaddres__address方法中的.get

2 个答案:

答案 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')