gpt4 book ai didi

Django 模型继承 - 得到 child

转载 作者:行者123 更新时间:2023-12-03 17:16:04 25 4
gpt4 key购买 nike

有没有办法访问基本模型的实际 child ,意思是:继续使用 django Docs 中的示例,让我们假设我正在建模不同的外卖餐厅,它们只是有共同点

  • 姓名
  • 都有deliver方法

  • 至此:
    class Place(models.Model):
    name = models.CharField(max_length=10)

    class Pizzeria(Place):
    topping = models.CharField(max_length=10)
    tip = models.IntegerField()

    def deliver(self):
    deliver_with_topping(self.topping)
    ask_for_tip(self.tip)

    class Shoarma(Place):
    sauce = models.CharField(max_length=10)
    meat = models.CharField(max_lenght=10)

    def deliver(self):
    prepare_sauce_with_meat(self.sauce, self.meat)

    我现在想执行:
    Place.objects.get(name="my_place").<GENERIC_CHILD>.deliver()

    即我不需要知道这个地方实际上是什么,只需要普通的 deliver方法。然后模型“知道”该调用什么。

    有没有类似 <GENERIC_CHILD> ?

    最佳答案

    我总是用 Inheritance Manager from django-model-utils对于这种操作。在您的模型上:

    class Place(models.Model):
    objects = InheritanceManager() #<- add inheritance manager
    name = models.CharField(max_length=10)

    def deliver(self):
    pass #not needed

    您的查询:
    Place.objects.get_subclass(name="my_place").deliver() 

    对我来说,这是一个干净而优雅的解决方案。别忘了加星 django-model-util repo如果你喜欢它。

    关于Django 模型继承 - 得到 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47619535/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com