我在不同的ServicePlaces中有很多不同价格的标准服务。
我的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的价格获得所有服务?
答案 0 :(得分:1)
抱歉这个愚蠢的问题。答案在Django manual。
答案 1 :(得分:0)
您与ServicePlace之间存在直接关系,因此您可以遵循:
services = service_place_x.service.all()
(请注意,您的service
字段名称错误,因为它引用了多个对象,因此它应该被称为services
。)
从那里,您可以直接在每项服务上访问价格:
for service in services:
price = service.price
这会在每次迭代时产生额外的数据库命中,因此您可能希望在原始查询中使用select_related
:
services = service_place_x.service.all().select_related('price')