将列重命名为queryset的Django JOIN

蓝宝石

我正在尝试使用联接和列重命名来构建我的Django查询集。不幸的是,我的两个字段具有相同的名称,因此queryset不会像我期望的那样返回值。

我的模型是这样的:

class Question(models.Model):
     text = models.CharField('Text', max_length=200, unique=True)

class UserQuestionnaire(models.Model):
     creation = models.DateField('creation date')

class UserChoice(models.Model):
     question = models.ForeignKey(Question)
     questionnaire = models.ForeignKey(UserQuestionnaire)
     text = models.CharField('Text', max_length=200)  # same field name
     votes = models.IntegerField(default=0)

我想要的输出查询如下:select * from polls_userchoice inner join polls_question;

它返回一个像这样的表:

+----+-------------+------------------+------+-------+----+-------+
| id | question_id | questionnaire_id | text | votes | id | text  |
+----+-------------+------------------+------+-------+----+-------+
|  1 |           1 |                3 | 2    |     0 |  1 | text1 |
|  2 |           4 |                3 | 6    |     0 |  2 | text2 |
|  3 |           3 |                3 | 6    |     0 |  3 | text3 |

我的Django queryset与

user_choice_list = UserChoice.objects.filter(
    questionnaire=user_questionnaire.id).select_related('question')

仅返回这样的字典

[{'questionnaire_id': 3L, 'votes': 0L, 'text': u'2', u'id': 1L, 'question_id': 1L},
 {'questionnaire_id': 3L, 'votes': 0L, 'text': u'6', u'id': 2L, 'question_id': 4L},
 {'questionnaire_id': 3L, 'votes': 0L, 'text': u'6', u'id': 3L, 'question_id': 3L}]

所以我的问题是,是否可以在查询过程中重命名问题模型的第二个“文本”列,以便我可以从queryset方法中访问它?

疯狂极客

您可以使用()代替select_related()。

user_choice_list = (UserChoice.objects
    .filter(questionnaire=user_questionnaire.id)
    .values(
        'id' , 
        'question_id' , 
        'questionnaire_id', 
        'question__text', 
        'votes', 
        'text'))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将django图像重命名为id.jpg

来自分类Dev

python pandas dataframe将一个colume重命名为multiindex列

来自分类Dev

将列中的每一行重命名为列名

来自分类Dev

将顺序文件重命名为行/列格式

来自分类Dev

python将列中的字符串重命名为指定的字符串

来自分类Dev

将“发布”重命名为其他内容

来自分类Dev

将ä,ö,ü重命名为ae,oe,ue

来自分类Dev

将原点重命名为默认值(git)

来自分类Dev

将命题重命名为目录标题的末尾

来自分类Dev

将文件名从大写重命名为小写

来自分类Dev

使用Gitflow将dev分支重命名为dev

来自分类Dev

将.jpeg批量重命名为.jpg

来自分类Dev

使用php将图像重命名为产品ID

来自分类Dev

将多个文件重命名为其后缀

来自分类Dev

将ä,ö,ü重命名为ae,oe,ue

来自分类Dev

如何将文件重命名为..(点点)?

来自分类Dev

将XML元素重命名为序列

来自分类Dev

将文件重命名为顺序编号

来自分类Dev

终端:将多个文件重命名为数字顺序

来自分类Dev

将文件重命名为其BASE64

来自分类Dev

Linux将文件重命名为dirname

来自分类Dev

自动将.rdf文件重命名为.XML

来自分类Dev

将total.js重命名为totaljs

来自分类Dev

将文件重命名为子目录

来自分类Dev

使用 VBA 将 Excel 重命名为 CSV

来自分类Dev

将表重命名为sp_help并且无法将其重命名

来自分类Dev

重击重命名为时间

来自分类Dev

dplyr重命名为plyrmr

来自分类Dev

将一堆扩展名为“ .jpg”的PNG图片重命名为“ .png”