【问题标题】:How to query this (snow flake) data schema in django如何在 Django 中查询这个(雪花)数据模式
【发布时间】:2015-11-11 21:13:45
【问题描述】:

我想在 django 中查询雪花数据模式,但无法正确处理。

model.py

class City(models.Model):
   city_name =       models.CharField(max_length=30, default='')

class CityTranslations(models.Model):
   language =        models.CharField(max_length=2, default='--')
   city_name_trans = models.CharField(max_length=30, default='')
   city =            models.ForeignKey(City)

class Doctor(models.Model):
   doctor_name =     models.CharField(max_length=30, default='')
   city =            models.ForeignKey(City)

class DoctorTranslations(models.Model):
   language =          models.CharField(max_length=2, default='--')
   doctor_name_trans = models.CharField(max_length=30, default='')
   doctor =            models.ForeignKey(Doctor)

简短说明:

Doctor  n:1  City
City    1:n  CityTranslations  
Doctor  1:n  DoctorTranslations   #e.g. german, russian, arabic

我想:
1.获取所有表的所有字段(selects * from)
2.收到所有医生的名单
3. 俄语翻译

所以我尝试了:

views.py

a = Doctor.objects.select_related(doctortranslations__language='ru', citytranslations__language='ru')

但这以错误结束

select_related() 得到了一个意外的关键字参数“doctortranslations__language”

感谢任何帮助。

【问题讨论】:

  • 将变量传递给函数时,您需要使用= 而不是==== 用于比较。
  • 谢谢。我更改了它,但仍然存在错误。我更新了问题。
  • 好吧,我错过了,把select_related换成filter
  • 感谢您的回复。我这样做了,现在我有:无法将关键字“citytranslations__language”解析为字段。

标签: python django django-queryset


【解决方案1】:
Doctor.objects.filter(doctortranslations__language='ru', 
                      city__citytranslations__language='ru')

【讨论】:

  • 请您再解释一下好吗? “城市”没有“语言”字段。所以“city__language”不应该存在......
  • 抱歉,我的答案已修正,你现在可以试试吗?
猜你喜欢
  • 1970-01-01
  • 2021-05-05
  • 2023-03-22
  • 1970-01-01
  • 2022-01-04
  • 2022-07-04
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多