Django中的模型继承

时间:2015-07-10 13:44:03

标签: python django models

我有:

var setText = $('.breadcrumb .set-text');

// Initialize .breadcrumb for the existing '.nav-tabs .active'.
setText.addClass('active');
var initText = $('.nav-tabs .active').text();
setText.text(initText);

$('.nav-tabs li a').on('click', function () {
  setText.text($(this).text());
});

我从旧数据库导入了所有用户。我显然可以做到:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<ul class="nav nav-tabs">
<li class="active">
    <a data-toggle="tab" href="#">some text</a>
</li>
<li>
    <a data-toggle="tab" href="#">some text1</a>
</li>
</ul>
<ul class="breadcrumb pull-right">
<li>
    <a href="#">Home</a>
</li>
<li class="set-text">
    <a href="#"></a>
</li>
</ul>
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade in active">
    <!--some content here-->
</div>
<div role="tabpanel" class="tab-pane">
    <!--some content here-->
</div>
</div>


<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>

返回class User(models.Model): name = models.CharField() class Worker(User): role = models.CharField() 个实例。

但是现在,我需要创建一个继承自bob = User.objects.get(name='bob') 的Worker实例?我第一次想到这个:

bob

返回一个新的Worker实例,但不是我想要的Bob用户关联。我怎么能基于bob实例创建这个Worker实例呢?

1 个答案:

答案 0 :(得分:0)

这是解决此问题的正确而完整的方法。多表继承只是User和Worker之间的OneToOneField关系,这是get here点。

要从User实例创建子类Worker,您应该这样做:

user = User.objects.get(name='bob')

worker = Worker(user_ptr=user, role='chief')
worker.__dict__.update(user.__dict__)
worker.save()

这里重要的一点是两个实例之间的dict更新。

这个问题可能会重复,但您必须在评论中搜索完整的答案。 dict更新技巧是解决方案的重要组成部分。