5
得到User.usernames考虑下面的友谊模式,即对每一个做友谊,有一个用户谁发送的好友请求,谁收到朋友请求的用户:Django的:查询通过外键
from django.contrib.auth.models import User
class Friendship(models.Model):
sender = models.ForeignKey(User)
receiver = models.ForeignKey(User)
我将如何构建一个查询会给我所有的用户名谁在用,比如说user123一个友好的用户?
请记住,user123可能是发送者或任何交情,他是。
同样的接收器,我只想返回User.username值,而不是整个用户对象。
到目前为止,我有这个笨重的半/溶液(我使用list()
,这样我可以同时添加user123的接收朋友和user123的送朋友,最终产生的所有朋友的列表) 。问题是,我得到所有的用户对象,我只想要用户名...并且有一个更好的方法来做到这一点。
friends_a = list(Friendship.objects.filter(sender=user123).values('receiver'))
friends_b = list(Friendship.objects.filter(receiver=user123).values('sender'))
friends_a = [] if not friends_a else friends_a[0].values()
friends_b = [] if not friends_b else friends_b[0].values()
all_friends = friends_a + friends_b
该死的,干得好。希望我能通过一个复杂的查询来实现它,但是这绝对能够完成这项工作。 – sgarza62