如何在 Model.py 中访问链接到另一个模型的模型字段?

时间:2021-01-27 11:33:53

标签: python django django-models

我有以下模型时间表、预订和路线价格。

计划模型:

class Schedule(BaseModel):
    bus_company_route = models.ForeignKey(BusCompanyRoute, on_delete=models.PROTECT)
    bus = models.ForeignKey(Bus, on_delete=models.PROTECT)
    travel_date_time = models.DateTimeField()
    seat_discounted_price_for_travel_agent = AmountField(null=True, blank=True)
    seat_discounted_price_for_user = AmountField(null=True, blank=True)
    seat_discounted_price_for_foreigner = AmountField(null=True, blank=True)
    representative_name = models.CharField(
        max_length=20,
        null=True,
        blank=True
    )
    seat_price_for_travel_agent = AmountField(null=True, blank=True)
    seat_price_for_user = AmountField(null=True, blank=True)
    seat_price_for_foreigner = AmountField(null=True, blank=True)
    

并且时间表以多对一的关系链接到 BusCompany 路线。 所以 BusCompany 路线模型是。

class BusCompanyRoute(BaseModel):
    route = models.ForeignKey(Route, on_delete=models.PROTECT)
    shift = models.ForeignKey(
        Shift,
        null=True,
        blank=True,
        on_delete=models.PROTECT
    )
    journey_length = models.TimeField(null=True)
    bus_company = models.ForeignKey(BusCompany, on_delete=models.PROTECT)

和 BusCompanyRoute 以一对多的关系与路线价格相关联。 RoutePrice 模型为。

class RoutePrice(BaseModel):
    bus_company_route = models.ForeignKey(BusCompanyRoute, on_delete=models.PROTECT)
    bus_type = models.ForeignKey(Category, on_delete=models.PROTECT)
    seat_price_for_travel_agent = AmountField(null=True)
    seat_price_for_user = AmountField(null=True)
    seat_price_for_foreigner = AmountField(null=True, blank=True)

现在我想从 seat_price_for_travel_agent 模型中获得 RoutePrice 计划'save method()' 我来到这里。我如何从 Schedule 中的 seat_price_for_travel_agent 获得 RoutePrice

def save(self, *args, **kwargs):
    seat_price_for_travel_agent = self.bus_company_route.routeprice_set

现在我不知道如何进一步。

1 个答案:

答案 0 :(得分:0)

我解决了!

def save(self, *args, **kwargs):
    self.seat_price_for_travel_agent = self.bus_company_route.routeprice_set.get(). \
        seat_price_for_travel_agent
    self.seat_price_for_user = self.bus_company_route.routeprice_set.get().seat_price_for_user
    self.seat_price_for_foreigner = self.bus_company_route.routeprice_set.get(). \
        seat_price_for_foreigner
    super(Schedule, self).save(*args, **kwargs)
相关问题