【问题标题】:Django workflow to convert model superclass to subclass将模型超类转换为子类的 Django 工作流
【发布时间】:2012-05-25 07:53:52
【问题描述】:

我有一个 Django 项目,它有两个模型:申请人和客户,其中客户是申请人的子类。我想要一些允许用户将现有的申请人实例添加为客户端的方法。我已经有一个申请者实例的视图,所以我认为在该页面上有一个客户端模型表单可以做到这一点,但从the documentation 看来,您似乎无法使用超类的实例初始化模型表单。我知道我可以通过让代码直接进入数据库并向子类表添加一个字段来做到这一点,但是有没有更 Django-y 的方式来做到这一点?

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    您可以使用以下代码从现有的Applicant 实例创建Client 实例:

    client = Client(applicant_ptr=applicant)
    client.save_base(raw=True)
    

    【讨论】:

    • 代码是here。基本上它会做你想做的事——它强制 django 在子类的表中创建正确的记录,而不创建新的Applicant
    • 我建议你看看这个答案:stackoverflow.com/questions/9821935/… 因为你错过了客户。__dict__.update(applicant.__dict__) 如果你忘记了这个,一些填写的字段可能会丢失。
    • @michel.iamit,__dict__.update(applicant.__dict__) hack 对于这种技术来说不是必需的——这就是我使用它的原因。
    猜你喜欢
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多