从多对一关系Django获取列表



我有两个这样的模型:

class User(models.Model):
id = models.AutoField(primary_key=True)
username= model.CharField(max_length=25)
class Book(models.Model):
id = models.AutoField(primary_key=True)
book_name = models.CharField(max_length=25)
created_by = models.ForeingKey(User, on_delete=models.CASCADE)

然后,我有一个带有json的rest api,用于获取所有书籍。

def get_book_list(request):
queryset = Book.objects.all()

return JsonResponse({
'result_list' : list(queryset.values()) 
})

现在,这个api返回json,如下所示:

{
"result_list" : [
{ "id" : 1, "book_name" : "A-Book", "created_by_id" : 1},
{ "id" : 2, "book_name" : "B-Book", "created_by_id" : 1},
{ "id" : 3, "book_name" : "C-Book", "created_by_id" : 1}
]
}

我有一个id为1、username为"的用户;测试";。

但是,api不返回外键用户对象。为什么?

有可能得到这样的列表吗?:

{
"result_list" : [
{ "id" : 1, 
"book_name" : "A-Book", 
"created_by" : { "id" : 1, "username" : "Test"}
},
{ "id" : 2, 
"book_name" : "B-Book", 
"created_by" : { "id" : 1, "username" : "Test"}
},
{ "id" : 3, 
"book_name" : "C-Book", 
"created_by" : { "id" : 1, "username" : "Test"}
}
]
}

有什么建议吗?

谢谢

尝试将str方法添加到用户模型中。

像这样:

class User(models.Model):
id = models.AutoField(primary_key=True)
username= model.CharField(max_length=25)
def __str__(self):
return self.username

我不确定这能解决你的问题吗,但这是我现在唯一想到的事情。

最新更新