我有个人资料。
class UserProfile(models.Model):
user = models.ForeignKey(User, related_name="%(class)s", unique=True)
providers = models.ManyToManyField(ServiceProvider, related_name="%(class)s")
class ServiceProvider(models.Model):
name = models.CharField(max_length=200, null=False, default="ims")
如何使用配置文件对象访问用户对象。 我可以这样做:(假设我有我的服务提供者对象)
provider.userprofile.user.get() // or something like that.
我想在一个SQL查询中执行此操作。因此,如果我只有提供者的pk,那么访问用户配置文件和/或拥有该提供者的用户将会很棒。
答案 0 :(得分:0)
由于您的用户只是外键,因此您需要的只是provider.userprofile.user
如果您不希望发生第二次SQL查询,则可以在选择个人资料时使用select_related
选项,例如:
UserProfile.objects.get(pk=<the_id>,select_related=True)
正如所写,您的模型不提供从提供者到用户的简单方法,因为从ServiceProvider
到UserProfile
有一个ManyToMany。您必须获取与提供商关联的UserProfile
集合,获取所需的集合,然后按上述方式继续获取用户。