【发布时间】:2014-03-07 14:59:18
【问题描述】:
我正在尝试使用连接和列重命名来构建我的 django 查询集。不幸的是,我的两个字段具有相同的名称,因此查询集没有像我预期的那样返回值。
我的模型是这样的:
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 内加入 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 查询集
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}]
所以我的问题是,是否可以在查询期间重命名问题模型的第二个“文本”列,以便我可以从查询集方法访问它?
【问题讨论】: