如何获取用户名而不是用户名?

2024-09-27 01:28:41 发布

您现在位置:Python中文网/ 问答频道 /正文

model.py 
class Review(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    product = models.ForeignKey(Product,on_delete=models.CASCADE)
    review = models.CharField(max_length=500)
    date_reviewed = models.DateTimeField(auto_now_add=True)

views.py
def review(request):
    if request.method=="POST":
        if request.user.is_authenticated:
            sender = request.user
            review=request.POST['review']
            pid = request.POST['pid']
            product=Product.objects.get(id=pid)
            
            
            rev = Review(user=sender,product=product,review=review)
            rev.save()
            reviews = Review.objects.filter(product=pid).values()
            
            da=list(reviews)
            print(da)
            return JsonResponse({'reviews':da})

预期产出:

[{'id': 6, 'user_name': sandeep, 'product_id': 2, 'review': 'lknkk',
 'date_reviewed': datetime.datetime(2021, 5, 1, 13, 2, 12, 404779, tzinfo=<UTC>)}]

我正在尝试使用jsonresponse将此数据发送到我的前端,以创建产品审查表,但在输出中,我得到的是用户id而不是用户名。是否有方法传递用户名?
以下是实际产出:

[{'id': 6, 'user_id': 2, 'product_id': 2, 'review': 'lknkk',
 'date_reviewed': datetime.datetime(2021, 5, 1, 13, 2, 12, 404779, tzinfo=<UTC>)}]

Tags: pyiddatetimedatemodelsrequestproductpost
1条回答
网友
1楼 · 发布于 2024-09-27 01:28:41

例如,通过修改查询来显式添加用户->;用户名:

reviews = Review.objects.filter(product=pid).values('id','user__username','product', .... )

如果要设置别名,请使用F():

reviews = Review.objects.filter(product=pid).values('id',user_name=F('user__username'),'product', .... )

请注意“user\uu name”中的双下划线,以访问相关模型中的字段

相关问题 更多 >

    热门问题