首页 > 技术文章 > 使用questionsModel.values()后不能获取模型中的属性对应的外键属性值的解决方式

os-python 2017-04-24 12:03 原文

class QuestionsModel(models.Model):
    author = models.ForeignKey(FrontUserModel,null=True)
    content = models.TextField(null=False)
    create_time = models.DateTimeField(auto_now_add=True)

1.在questions模型中,有个author外键

2.使用questions = QuestionsModel.objects.all()

       questionsModel = questions.values()

这里返回的是一个字典,author改变为一个键值对,非author模型 因此,是无法通过auth.username来获取对应的用户信息。

解决方式:

1.遍历questions模型,得到author属性author_id的值。

2.利用值进行查询当前用户的属性。

3.将查询到的用户信息和questions模型同时返回

 tmp_questions =[]
   for q in questions:
       user = FrontModel.objects.get(id=q['author_id'])
       tmp_questions.append({'username':user.username,'desc':q})

 

另一种方式:

1.在values中采用 questionsModel = questions.values('author__username ')的方式获得用户信息。

推荐阅读