【发布时间】:2021-10-14 01:38:45
【问题描述】:
我有以下型号:
class User(models.Model):
username = models.CharField(max_length=255, unique=True)
display_name = models.CharField(max_length=255)
...
class Profile(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=255)
在视图中,我有一个名为keyword 的参数。我想要做的是查询User 表中包含keyword 的任何用户username 字段OR display_name 字段,AND 也是第一个相关配置文件的name 字段。希望这是有道理的。有没有办法在一个查询中做到这一点?有些用户可能没有任何个人资料,因此也需要考虑在内。
到目前为止,我得到了这个:
from django.db.models import Q
def get_queryset(keyword):
qs = User.objects.all()
qs = qs.filter(Q(username__icontains=keyword), Q(display_name__icontains=keyword))
return qs
感谢您的帮助!
【问题讨论】:
-
您能否添加您自己的查询,然后我们继续?您还想包括没有个人资料的用户吗?
-
@ÇağatayBarın 刚刚添加
-
用户可以拥有多个个人资料吗?您想在查询结果中包含没有个人资料的用户吗?你能详细说明
first related profile's name field吗?对不起,我没有得到那部分 -
@ÇağatayBarın 是的,用户可以有多个配置文件,但只需要查询第一个(默认排序)。是的,我也想包括没有任何个人资料的用户。
标签: django django-models django-queryset