【发布时间】:2020-10-31 13:30:06
【问题描述】:
我是 django 新手,我想在 django 中创建连接查询,我的模型如下
模型.py
Class area_country(models.Model):
country_id = models.AutoField(primary_key=True)
country_name = models.CharField(max_length=100, null=True)
short_name= models.CharField(max_length=20, null=True)
flag_enable = models.SmallIntegerField()
class Meta:
db_table = "area_country"
class area_state(models.Model):
state_id = models.AutoField(primary_key=True)
state_name = models.CharField(max_length=100, null=True)
short_name = models.CharField(max_length=20, null=True)
country_id = models.ForeignKey(area_country, on_delete=models.CASCADE)
flag_enable = models.SmallIntegerField()
class Meta:
db_table = "area_state"
class area_city(models.Model):
city_id = models.AutoField(primary_key=True)
city_name = models.CharField(max_length=100, null=True)
short_name = models.CharField(max_length=20, null=True)
state_id = models.ForeignKey(area_state, on_delete=models.CASCADE)
flag_enable = models.SmallIntegerField()
class Meta:
db_table = "area_city"
我需要类似的查询
SELECT "area_country"."country_id",
"area_country"."country_name",
"area_state"."state_id",
"area_state"."state_name",
"area_city"."city_id",
"area_city"."city_name"
FROM "area_country"
LEFT OUTER JOIN "area_state" ON ("area_country"."country_id" = "area_state"."country_id_id")
LEFT OUTER JOIN "area_city" ON ("area_state"."state_id" = "area_city"."state_id_id")
** 由我试试 **
view.py
result = area_country.objects.all().select_related('area_state').values('country_id', 'country_name', 'area_state__state_id', 'area_state__state_name')
当我使用 query = result.query
打印它时SELECT "area_country"."country_id", "area_country"."country_name", "area_state"."state_id", "area_state"."state_name"
FROM "area_country"
LEFT OUTER JOIN "area_state" ON ("area_country"."country_id" = "area_state"."country_id_id")
没关系,我试试
result = area_country.objects.all().select_related('area_state').select_related('area_city').values('country_id', 'country_name', 'area_state__state_id', 'area_state__state_name','area_city__city_id','area_city__city_name')
it show me error
Cannot resolve keyword 'area_city' into field. Choices are: area_state, country_id, country_name, flag_enable, short_name
请帮助我进行 django 查询。
对于信息朋友,我知道如何在 django 中使用 cursor = connection.cursor() 编写原始查询
【问题讨论】:
标签: django postgresql