【发布时间】:2017-10-03 23:16:05
【问题描述】:
我有 3 个模型:
class Event(models.Model):
cur_datetime = models.DateTimeField(default=datetime.datetime(1970, 1, 1, 0, 0, 0, 0, pytz.UTC), blank=True, null=True)
week_no = models.IntegerField()
day_no = models.IntegerField()
class SubEvent(models.Model):
event = models.ForeignKey(Event, on_delete=models.CASCADE)
version = models.IntegerField()
class SubSubEvent(models.Model):
sub_event = models.ForeignKey(SubEvent, on_delete=models.CASCADE)
length = models.IntegerField()
我想从SubSubEvent 模型中获取一个查询集,其中包含作为一个对象的所有外键。我现在拥有的是:
querySet = SubSubEvent.objects.filter(sub_event__event__cur_datetime__range=[from_date, to_date])
这将返回一个查询集,并使用 for 循环在每个对象上获取 __dict__,我得到如下内容:
{'event_id': 1, '_state': <django.db.models.base.ModelState object at 0x7fd7d9cefeb8>, 'id': 10, 'length': '1'}
这只是我想要实现的查询的一部分。我真正想要的是event_id 中的所有字段,而不仅仅是id 数字。换句话说,来自Event 的所有字段(包括数据)加上SubEvent 加上SubSubEvent 在一个查询集中。此查询集应包含具有 cur_datetime、week_no、day_no、version 和 length 的对象。
【问题讨论】:
-
我不太明白:您的查询提供了
SubSubEvent实例,您可以从中访问相关的SubEvent和Event实例,然后访问它们的所有属性(例如querySet.first().sub_event.event.cur_datetime,等)。
标签: django python-3.x django-models django-queryset