Django ManyToManyField和其他类的值

Django ManyToManyField和其他类的值,django,manytomanyfield,Django,Manytomanyfield,我在不同的服务场所有很多不同价格的标准服务 My models.py: class Service(models.Model): service = models.CharField(max_length=200, unique=True) class ServicePlace(models.Model): place = models.CharField(max_length=200, unique=True) #what services are provided

我在不同的服务场所有很多不同价格的标准服务

My models.py:

class Service(models.Model):
    service = models.CharField(max_length=200, unique=True)

class ServicePlace(models.Model):
    place = models.CharField(max_length=200, unique=True)
    #what services are provided in this ServicePlace:
    service = models.ManyToManyField('Service')

class Price(models.Model):
    price = models.DecimalField(max_digits=6, decimal_places=2)
    service = models.ForeignKey("Service")
    place = models.ForeignKey("Place")

如何以ServicePlace X的价格获得所有服务

您与ServicePlace和Service之间有着直接的关系,因此您可以遵循以下原则:

services = service_place_x.service.all()
(注意,
服务
字段的名称有误,因为它引用了多个对象,所以可能应该称为
服务

从那里,您可以直接访问每项服务的价格:

for service in services:
   price = service.price
但是,这会在每次迭代中产生额外的db命中,因此您可能希望在原始查询中使用
select\u related

services = service_place_x.service.all().select_related('price')

对不起,我问了个愚蠢的问题。答案在Django中。

此代码不适用于服务中的服务:price=service。price(AttributeError:“service”对象没有属性“price”):