所以我有一个数据库结构,用户跟随其他用户。在内置的用户模型中,我有'first_name','username'等字段...友情模型如下:
class Friendship(models.Model):
tail_user = models.ForeignKey(User,related_name='follower') #The one who sent the friend request
head_user = models.ForeignKey(User,related_name='followed')
某些用户在给定时刻没有first_name,稍后会更新。现在对于一个特定的用户(比如演员),我希望得到所有拥有first_name的朋友。像这样的东西
SELECT * FROM friendship JOIN user ON friendship.head_user_id=user.id WHERE user.first_name != ''
如果可能的话,如何在不使用子查询的情况下,如何在Django ORM中实现此目的。
我提供的SQL查询可能有误,只是为了传达我想表达的内容
答案 0 :(得分:2)
您可以exclude()
空的first_name值:
Friendship.objects.exclude(head_user__first_name='')
请注意,如果first_name
为NULL
(不是空字符串),则需要使用__isnull
:
Friendship.objects.exclude(head_user__first_name__isnull=True)
而且,是的,如果你想排除NULL
和空值,你可以排除排除:
Friendship.objects.exclude(head_user__first_name__isnull=True) \
.exclude(head_user__first_name='')