Django ManyToManyField 和来自其他 class 的值

Django ManyToManyField and values from other class

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

ServicePlace 与 Service 有直接关系,因此您可以遵循:

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

抱歉这个愚蠢的问题。答案在 Django manual.