【发布时间】: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