反向访问抽象模型中的OneToOne字段

问题描述 投票:0回答:2

假设我具有以下数据库结构:

class Asset(models.Model):
    # ...

class AbstractBuilding(models.Model):
    asset = models.OneToOneField(Asset, on_delete=models.CASCADE, primary_key=True)
    # ...

    class Meta:
        abstract = True


class Office(AbstractBuilding):
    # ...


class Lab(AbstractBuilding):
    # ...


class PowerPlant(AbstractBuilding):
    # ...

[如果我有Office对象,则很容易通过一对一字段获取相应的Asset(例如office_object.asset返回Asset)。但是,假设我有一个Asset。如何从Office对象获取相应的Lab(或PowerPlantAsset)?

django database django-models one-to-one
2个回答
0
投票
# You have an instance of Asset e.g.
asset = Asset.objects.first()

office = getattr(asset, "office") # gives you related office if it is related to office

lab = getattr(asset, "lab") # gives you related lab if it is related to lab

power_plant = getattr(asset, "powerplant") # gives you related powerplant if it is related to powerplant


0
投票

在您的related_name

© www.soinside.com 2019 - 2024. All rights reserved.