我有这样的模特:
class Person(models.Model):
person_id=models.AutoField(primary_key=True)
person_name=models.CharField(max_length=100)
person_family=models.CharField(max_length=100)
person_father=models.ForeignKey('Person', related_name='child_from_father',null=True)
person_mother=models.ForeignKey('Person', related_name='child_from_mother',null=True)
def __str__(self):
return self.person_family
class Car(models.Model):
car_id=models.AutoField(primary_key=True)
car_name=models.CharField(max_length=100)
car_owner=models.ForeignKey(Person)
def __str__(self):
return self.car_name
有一些查询需要orm表单:
1: select person_name from Person
2: select *
from Person,Car
where car_owner=person_id
3: select *
from Person,Car
group_by(person_name)
4: select *
from Person,Car
where name like %x%
group_by(person_name)
having car_id >= 2
最后你知道对orm的任何好评 请求帮助
答案 0 :(得分:0)
我假设小组是为了订购。如果你真的想要group_by看看django中的聚合和注释。我猜你要找的是:
1:获取人员记录 - 从人员
中选择person_name person = Person.objects.get(<WHERE clause>).values('person_name')
2:选择* 来自人,汽车 car_owner = person_id
获取属于该人的汽车
cars = Car.objects.filter(car_owner = person)
3:选择* 来自人,汽车 GROUP_BY(PERSON_NAME)
获取按所有者分类的汽车列表
car_list = Car.objects.all().order_by('car_owner__person_name')
4:选择* 来自人,汽车 其中名称如%x% GROUP_BY(PERSON_NAME) car_id&gt; = 2
带搜索条件的汽车列表
car_list = Car.objects.filter(id__gte = 2, car_name__contains = "<search>").order_by('car_owner__person_name',)
汽车及其所有者
car_list = Car.objects.all().values('car_name','car_owner__person_name')