相关疑难解决方法(0)

Django模型继承:创建现有实例的子实例(向下转换)?

我正在尝试整合第三方Django应用程序,该应用程序做出了不幸的继承决定django.contrib.auth.models.User,这对于可插拔应用程序来说是一个很大的禁忌.引用Malcolm Tredinnick:

更重要的是,就像在Python中一样,你不能使用Django的模型继承来"低估".也就是说,如果您已经创建了User实例,那么您不能在没有深思熟虑的情况下,使该实例对应于您尚未创建的子类实例.

好吧,我正处于需要将此第三方应用程序与现有用户实例集成的情况.所以,如果假设我确实愿意在封面下捅,我有什么选择?我知道这不起作用:

extended_user = ExtendedUser(user_ptr_id=auth_user.pk)
extended_user.save()
Run Code Online (Sandbox Code Playgroud)

也没有例外,但是它打破了各种各样的东西,首先django.contrib.auth.models.User用空字符串覆盖所有列...

python django inheritance

47
推荐指数
3
解决办法
9035
查看次数

Django模型继承:使用现有的超类创建子类

我正在使用多表继承,并想知道如何从超类的实例创建一个继承的类型.

使用文档中给出的示例:

class Place(models.Model):
    name = models.CharField(max_length=50)
    address = models.CharField(max_length=80)

class Restaurant(Place):
    serves_hot_dogs = models.BooleanField()
    serves_pizza = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)

现在当你创建一个Restaurant,你自动创建一个Place,这很好,以及我期望和想要的行为.

但是,如果我做了一个Place,后来决定我要转换为特定类型(如Restaurant).你如何Restaurant使用现有的创建Place

django inheritance model

23
推荐指数
3
解决办法
1万
查看次数

标签 统计

django ×2

inheritance ×2

model ×1

python ×1