繁体   English   中英

从父母那里接孩子

[英]Accessing child from parent

我有以下定义的模型:

class PrimaryAsset(models.Model):
    title = models.Charfield(max_length=200)

class Service(PrimaryAsset):
    description = models.Charfield(max_length=200)

class Website(PrimaryAsset):
    url = models.Charfield(max_length=200)


class AssetLinks(models.model):
    high = models.ForeignKey(PrimaryAsset)
    low = models.ForeignKey(PrimaryAsset)


AssetLinks.objects.filter(high=212)[0].low

当我执行上面的过滤器时,如何知道对象是哪个实例(网站或服务)? 另外,有没有办法避免以prefetch_related的方式获取所有子信息的N + 1查询?

您甚至可以使用select_related而不是prefetch_related 这样的事情应该可以解决问题:

asset = AssetLinks.objects.filter(high=212).select_related(
    'high__service', 'high__website',
    'low__service', 'low__website',
)[0]

#check for service/website
service = getattr(asset.high, 'service', None)
website = getattr(asset.high, 'website', None)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM