我有两个型号
class Weather(model.model):
region = models.ForeignKey(Region)
district = models.ForeignKey(District)
temp_max = models.IntegerField(blank=True, null=True, verbose_name='Max temperature (C)')
temp_min = models.IntegerField(blank=True, null=True, verbose_name='Min temperature (C)')
和
class Plan(model.model):
name = tinymce_models.HTMLField(blank=True, null=True)
region = models.ForeignKey(Region)
district = models.ForeignKey(District)
为每个地区和地区提供独特的排。 我想结合结果,以便我可以得到两个表的所有列
这两个模型彼此无关。 “ 我需要像
那样进行连接 join weather w on w.region = A.region and w.distric = A.district
以便结果包含每个对象中的所有列,如
obj.temp_max等
答案 0 :(得分:2)
w = Weather.objects.get(pk=1)
w.region.plan.name
w.district.plan.name
w.temp_max
w.temp_min
w.region
是链接区域行,因此可以通过它访问区域模型中的任何属性。因此,如果您的区域模型有name
,则会w.region.name
,而w.district
则相同。
w.region.plan
是计划表中的一行,该行具有链接到主要键为1的天气对象的区域行的外键; w.district.plan
的工作方式相同。
此外,我必须显示的数据是计划。所以我想去 从计划到天气。不是从天气到计划。我认为我不能 go plan.region.weather.temp_max因为会有很多行 一个地区,我想过滤区域和地区的分类
p = Plan.objects.get(pk=1) # get a Plan
p.region.weather_set.all() # all "weathers" for the region for this plan
p.district.weather_set.all() # all "weathers" for the district for this plan
过滤:
plans = Plan.objects.filter(region__name='Region 1') # all plans for that region
for plan in plans:
region_weather = plan.region.weather_set.all()
district_weather = plan.district.weather_set.all()
如果我有多行,有没有办法聚合它 e,g温度。即我有两个相同地区的天气和 区和我想要平均
是的,请阅读aggregation上的文档。