如何解决多个 QuerySet 到另一个模型
我正在编写以下代码来使用 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,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"
}
}
解决方法
我找到了解决方案,也许对某人有帮助
@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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。