【问题标题】:How can I get a full dict when I have performed a Many-to-one relationships?当我执行多对一关系时,如何获得完整的 dict?
【发布时间】:2018-06-13 07:34:11
【问题描述】:
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中成功运行并得到我期望的结果。

【问题讨论】:

  • 如果两个模型有重叠字段名称怎么办?
  • 我觉得没关系。而且我查了一下,没有任何重叠的字段名。
  • 这绝对是错误的做法。要充分利用 Django,您应该尽可能地使用模型实例; values() 仅适用于专门的用例。不要使用它,并遵循模板中或任何地方的关系。
  • 感谢指点!!而你通常如何将模型实例转成对应的 JSON?
  • @Daniel Roseman@Willem Van Onsem:非常感谢!!我已经通过序列化器完成了这部分。而且还有很多代码等着我去重构。

标签: django django-models orm python-3.6


【解决方案1】:

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 2020-06-25
    • 2021-04-11
    • 1970-01-01
    相关资源
    最近更新 更多