2016-02-10 119 views
-1

我有一个像(它是多对多关系)模式:获取列表相关的对象

class User(models.Model): 
    name = moddels.CharField(max_length=255) 

class MyModel(models.Model): 
    user1 = models.ForeignKey(User, related_name='user_set') 
    user2 = models.ForeignKey(User) 

我想要得到这关系到user2领域的一些用户列表对象。我怎么能做到这一点?

我无法使用ManyToMany字段。

+0

你的问题不是很清楚,你是什么意思'得到一些与user2字段相关的用户列表对象? –

+0

我想要像'request.user.user_set.get_related_users()'一样使用它,它必须返回所有'user2',其中'user1 = request.user' – Nikitka

+0

使用给定的代码,你可以这样做:[u.user2 for u in request.user.user_set.all()]并拥有你想要的列表。 – Maciek

回答

0

你可能无法得到一个查询整个用户对象,但你可以得到相关user2的ID:

user2_ids = request.user.user_set.all().values_list('user2', flat=True).distinct() 

如果你真的需要整个的对象,你可以做一个步骤:

user2s = User.objects.filter(id__in=user2_ids) 
0

给所述user2属性一个related_name以及:

user2 = models.ForeignKey(User, related_name='user2s') 

然后你可以使用user.user2s.all()等等找到它们。