Django查找跨越关系不适用于Heroku

时间:2014-11-23 20:59:57

标签: django heroku

对于我们的Django应用程序,我们有一个ManagerProfile,它通过OneToOne关系附加到Django User模型。对于一种形式,我们希望下载属于特定公司的经理。为此,我们使用UserModelMultipleChoiceField,它接受管理器的User对象的查询集。

# models.py that holds the ManagerProfile class
class ManagerProfile(models.Model):
    company = models.ForeignKey(Company)
    user = models.OneToOneField(settings.AUTH_USER_MODEL)

要创建查询集,我们会执行查询,通过managerprofile关系(https://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships)查询用户。

# inside get_form_kwargs
self.company = get_object_or_404(Company, pk=kwargs['company_id'])
kwargs['managers'] = User.objects.filter(managerprofile__company=self.company)

我们的代码无处不在,但我们得到了Heroku ......

"FieldError: Cannot resolve keyword 'managerprofile' into field. Choices are:  action_object_actions, actor_actions, address, date_joined, email, emailaddress, first_name, follow, groups, id, is_active, is_staff, is_superuser, last_login, last_name, logentry, management, managers_of, password, socialaccount, target_actions, user_permissions, username"

我们还尝试在没有ManagerProfiles的情况下排除User对象...

kwargs['managers'] = User.objects.exclude(managerprofile__isnull=True).filter(managerprofile__company=self.company)

并重新组织查询集的生成方式......

profiles = ManagerProfile.objects.filter(company=self.company)
kwargs['managers'] = User.objects.filter(managerprofile__in=profiles)

...但我们总是会遇到同样的错误。

由于某种原因,在构建查询集时无法识别User-ManagerProfile关系,但我们能够在整个应用程序的其余部分从ManagerProfile中获取数据。

0 个答案:

没有答案