从通过 AJAX 接收的查询集中访问外键对象

问题描述

我在 Django 的 AJAX 请求中从我的 views.py 中请求一个查询集。使用的模型有一个用户相关的外键字段。我无法访问这些外键元素。

我的 views.py 看起来像这样

@csrf_exempt
def replies(request):
    if request.is_ajax and request.method == "POST":
        cid = request.POST.get('cid',None)
        data = {
            'replies': serialize("json",Comment.objects.filter(replyTo=cid[1:]))
        }
        return JsonResponse(data)

我的模型 Comment 看起来像这样

class Comment(models.Model):
    commenter = models.ForeignKey(User,on_delete=models.CASCADE)
    cid = models.UUIDField(default=uuid.uuid4,editable=False)
    commentText = models.TextField()
    likes = models.ManyToManyField('User',related_name='likes')
    commentOn = models.ForeignKey(Article,related_name='commentOn',on_delete=models.CASCADE,null=True,blank=True)
    created_at = models.DateTimeField(default=timezone.Now)
    replyTo = models.UUIDField(null=True,blank=True)

    def __str__(self):
        return f'{self.commenter.first_name + "  [" + str(self.likes.count()) + "]"}'

我的ajax请求是这样的

$.ajax({
        type: 'POST',url: '{% url 'replies' %}',data: {
                    'cid':id
        },dataType: 'json',success: function (data) {
          if (data.replies) {
            var htmldata=""
            var actual = JSON.parse(data.replies);
            for(var x in actual){
            htmldata+="<p>"+actual[x].fields.commentText+"  "+actual[x].fields.commenter.first_name +"  "+actual[x].fields.created_at+"</p>"
            }
            Box.html(htmldata);
          }
        }
      });
上面的

actual[x].fields.commenter.first_name 应该给出由外键链接用户的 commneter 的名字。 我得到类似 <my comment text> undefined <date time>

输出

我知道为什么我用“未定义”代替用户名

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)