0

我有两个模型

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 等

4

1 回答 1

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以同样的方式工作。


此外,我必须显示的数据是用于计划的。所以我想从计划到天气。不是从天气来计划的。我不认为我可以去 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()

如果我有不止一行,有什么方法可以汇总例如温度。即我有两个针对同一地区和地区的天气输入,我想要平均值

是的,请阅读有关聚合的文档。

于 2012-11-01T05:02:42.653 回答