当前位置: 首页 > 面试题库 >

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

杜茂
2023-03-14
问题内容

我正在尝试集成一个第三方Django应用程序,该应用程序做出了不幸的决定继承自django.contrib.auth.models.User,这对于可插拔应用程序来说是一个很大的禁忌。引用马尔科姆·特雷丁尼克(Malcolm Tredinnick):

不过,更重要的是,就像在Python中一样,你不能使用Django的模型继承来“贬低”。就是说,如果你已经创建了User实例,那么你必须在不掩饰的情况下使该实例与你尚未创建的子类实例相对应。

好吧,我处于需要将此第三方应用程序与现有用户实例集成的情况。因此,如果假设我确实愿意在幕后p脚,那我有什么选择?我知道这行不通:

extended_user = ExtendedUser(user_ptr_id=auth_user.pk)
extended_user.save()

也不例外,但是它会破坏各种东西,首先是django.contrib.auth.models.User用空字符串覆盖所有列…


问题答案:

这应该工作:

extended_user = ExtendedUser(user_ptr_id=auth_user.pk)
extended_user.__dict__.update(auth_user.__dict__)
extended_user.save()

在这里,你基本上只是将auth_user版本中的值复制到extended_user版本中,然后重新保存。不是很优雅,但是可以。



 类似资料:
  • 如何知道django模型的一个实例何时在sqlite中创建了?我尝试了许多方法,但是我不知道或不知道我的数据库实例是何时创建的 从datetime导入datetime,time delta time _ threshold = datetime . now()-time delta(hours = 4)results = x . objects . filter(created _ _ lt =

  • 本文向大家介绍Python实现类继承实例,包括了Python实现类继承实例的使用技巧和注意事项,需要的朋友参考一下 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,本文就举一例Python类继承的实例。 实例代码如下: 运行结果:

  • 本文向大家介绍django框架面向对象ORM模型继承用法实例分析,包括了django框架面向对象ORM模型继承用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了django框架面向对象ORM模型继承用法。分享给大家供大家参考,具体如下: Django ORM对模型继承的支持,将python面向对象的编程方法与数据库面向关系表的数据结构结合的很巧妙。支持三种风格的模型继承。 1.抽

  • 问题内容: 我有只希望从中创建一个实例的模型,不应再允许更多实例。 这可能吗?我有感觉到已经在某处完成了此操作,但是很遗憾,我无法找到它。 编辑:我需要一个愚蠢的简单CMS。我有一个FrontPage和Page类继承的抽象类。我只希望能够创建一个首页对象。 FrontPage对象和Page对象之间的区别在于,它们应该具有略有不同的字段和模板,并且如上所述,只能创建一个FrontPage。 问题答案

  • 本文向大家介绍javascript实现继承的简单实例,包括了javascript实现继承的简单实例的使用技巧和注意事项,需要的朋友参考一下 作为一门面向对象的语言,那么继承自然就是一大特征,下面是一段非常简单代码实例,它演示了实现继承的基本原理,有兴趣的或者恰好要学习此方面的朋友可以参阅一下,希望能够给大家来帮组。 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 我有下面的代码。 我得到编译器错误时,分配到,因为它的类型。我知道这是与继承,但我不知道为什么,因为内容是相同的。此外,我如何强制将其转换为。 我试过了 但是它在前者中抛出了一个关于转换的异常,在后者中变成了null。不知道去谷歌上找什么。我的意思是像这样,但完全相反。