当我执行多对一关系时,如何获得完整的词典?

时间:2018-06-13 07:34:11

标签: django django-models orm python-3.6

class EbConfig(models.Model):
    id = models.IntegerField(primary_key=True)
    specific_field_config_id = models.IntegerField()
    judge_result = models.CharField(max_length=50)


class EbResult(models.Model):
    eb_config = models.ForeignKey(EbConfig, on_delete=models.CASCADE)
    cc_log_info_base_id = models.BigIntegerField(primary_key=True)
    eb_config_id = models.IntegerField()

result = EbResult.objects.filter(...)...

在满足我的条件后,我得到一个名为“result”的QuerySet。 当我输入:

result.select_related('eb_config').values()

我得到这样的东西:

<QuerySet [{'eb_config_id': 1, 'cc_log_info_base_id': 10001},...>

但我想得到的是这样的:

"<QuerySet [{'eb_config_id': 1, 'cc_log_info_base_id': 10001, 'id ':'', 'specific_field_config_id ':'', 'judge_result ':''},...>"

我能做些什么来做到这一点? 我知道,我可以通过以下方式获得EbConfig的对象:

list(test)[0].eb_config

但我真正想要的是EbConfig INNER JOIN EbResult的完整词典。 当我打印result.query时,我找到一个正确的SQL语句,可以在MySQL中成功运行并得到我期望的结果。

1 个答案:

答案 0 :(得分:0)

Soft ForeignKey和序列化程序。

你可以在Django中完全执行它。

serializer doc recommend by Willem Van Onsem in question comment

How can I perform ManyToOne without ForeignKey in db?