多个 QuerySet 到另一个模型
Posted
技术标签:
【中文标题】多个 QuerySet 到另一个模型【英文标题】:Multiple QuerySet to another Model 【发布时间】:2021-07-03 05:14:16 【问题描述】:我正在编写以下代码来使用 Django ninja 框架搜索配置文件模型中的类别,如果我只检索配置文件中的字段,则所有查询返回,但是当我需要从用户模型中获取用户名时,只返回一条记录从循环中。
profile.py
class Profile(models.Model):
SERVICEPROVIDER = 'service_provider'
CUSTOMER = 'customer'
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
conf_password = models.CharField(max_length= 124)
category = models.CharField(max_length= 80, blank=True, null=True)
click = models.IntegerField(blank=True, default=0)
date_clicked = models.DateTimeField(auto_now_add=True, blank=True,null=True)
image_path = models.ImageField(upload_to='user_uploads/', blank=True)
role = models.CharField(max_length=100, choices=[
(SERVICEPROVIDER, SERVICEPROVIDER),
(CUSTOMER, CUSTOMER),])
profile_info = models.JSONField(blank=True, null=True)
def __str__(self):
return f'self.user.username'
auth.py
@auth.get("/search/category", auth=None, response=200: searchSchemaout, 404: MessageOut)
def search(request, category:str):
profile = Profile.objects.filter(category__icontains=category).values()
for i in range(len(profile)):
user = get_object_or_404(User,id=profile[i]['id'])
return 200,
"user": user,
"profile": profile[i]
auth.py 架构
class UserSchemaOut(Schema):
username: str
class profileSchemaout(Schema):
role: str
category: str
class searchSchemaout(Schema):
user: UserSchemaOut
profile: profileSchemaout
结果:
"user":
"username": "ahmed"
,
"profile":
"role": "service_provider",
"category": "doors"
【问题讨论】:
【参考方案1】:我找到了解决方案,也许它可以帮助某人
@offices.get("/category/user_id", auth=None, response=200: List[searchSchemaout], 404: MessageOut)
def category(request, category:str):
cat_qs = Profile.objects.all().filter(category__icontains=category)
if cat_qs:
return cat_qs
else:
return 404, 'message': 'This category not found.'
架构:
class UserSchemaOut(Schema):
pk: int
username: str
class searchSchemaout(Schema):
user: UserSchemaOut
category: str
image_path : str
role: str
address: str
【讨论】:
以上是关于多个 QuerySet 到另一个模型的主要内容,如果未能解决你的问题,请参考以下文章
Django 2021年最新版教程21数据库查询 model 多条数据 queryse转dict字典 返回渲染到前端
如何让用户关联到另一个模型 DRF。 ValueError:精确查找的 QuerySet 值必须使用切片限制为一个结果