Django模型ForeignKey返回ID

时间:2017-11-06 11:23:06

标签: python django model-view-controller

我一直在尝试搜索论坛以获得答案,但搜索似乎有点棘手。

我有以下模型从django用户表中提取用户:

class trendingidea(models.Model):
        iname = models.CharField(unique=True, max_length=15)
        idea = models.TextField(unique=True)
        submittedon = models.DateTimeField()
        support = models.PositiveSmallIntegerField()
        readbyadmin = models.BooleanField()
        feasibilitycheck = models.BooleanField()
        submittedby = models.ForeignKey(User,related_name="submitted_by")
        assignedto = models.ForeignKey(User, blank=True, null=True, related_name="assignedto")

然而,当我查询数据库并提取信息时:

ti=list(trendingidea.objects.values())

print(ti)

[{'readbyadmin': False, 'id': 1, 'idea': 'cisco', 'feasibilitycheck': True, 'submittedby_id': 1, 'support': 1, 'submittedon': datetime.datetime(2017, 11, 6, 11, 8, 10, tzinfo=<UTC>), 'iname': 'cisoc', 'assignedto_id': 1}]

取代submittedbyassignedto,它为我submittedby_id:1和assignedto_id:1。

我想要用户名而不是他们的ID。 有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:4)

您可以通过引用带有__前缀的相关字段来实现。唯一的缺点是你必须列出所有其他字段:

trendingidea.objects.values('readbyadmin',
                            'id',
                            'idea',
                            'submittedon',
                            'support',
                            'readbyadmin',
                            'feasibilitycheck',
                            'submittedby__name',
                            'assignedto__name')

请注意,您的词典将包含submittedby__nameassignedto__name个键。