Django ManyToManyField和来自其他类的值

时间:2015-02-11 11:26:02

标签: django manytomanyfield

我在不同的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的价格获得所有服务?

2 个答案:

答案 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')