我有一个下面给出的模型。
class mc(models.Model):
ap=models.CharField(max_length=50,primary_key=True)
de=models.CharField(max_length=50)
STATUS=models.CharField(max_length=12,default='Y')
class Meta:
unique_together=(("ap","de"),)
db_table='mc'
我已经写了ap ='1',de ='2'到表mc。
+----+----+--------+
| ap | de | STATUS |
+----+----+--------+
| 1 | 2 | Y |
+----+----+--------+
然后我试着写ap ='1'和de ='3',但它只是覆盖了前一个。现在该表包含
+----+----+--------+
| ap | de | STATUS |
+----+----+--------+
| 1 | 3 | Y |
+----+----+--------+
然后我试着写ap ='2',de ='3'及其工作。由于我给了unique_together,ap和de的组合不起作用。
但如果我没有在ap或de上使用'primary_key'或'unique'约束,unique_together会工作。
你能帮我吗?如何在主键上使用unique_together?实际问题是,我有另一个类mc1,它使用外键到字段ap。
class mc1(models.Model):
test=models.ForeignKey(mc,on_delete=models.CASCADE,to_field='ap')
因此mc.ap应该是唯一的,以定义一个外键。
答案 0 :(得分:6)
Django不支持多列主键。几年来一直是feature request。每个模型must have one primary key。
在您的情况下,如果ap
是主键,则(ap=1, de=2)
中的每个值都必须是唯一的。无法同时存储(ap=1, de=3)
和unique_together
。
也许你可以添加另一个字段作为主键。然后,您就可以('ap', 'de')
获得<div class="row">
<div class="col-sm-12 col-xs-12 col-lg-12 col-md-12 welcome">
<ul class="nav navbar-nav navbar-nav-primary">
<li class="active">
<a href="#one" data-toggle="tab">
<i class="fa fa-map-marker" aria-hidden="true"></i>
<span class="li-text">Location</span>
</a>
</li>
<li>
<a href="#two" data-toggle="tab">
<i class="fa fa-heartbeat" aria-hidden="true"></i> <span class="li-text">Heartbeats</span>
</a>
</li>
<li>
<a href="#three" data-toggle="tab">
<i class="fa fa-power-off" aria-hidden="true"></i>
<span class="li-text">Reboots</span>
</a>
</li>
<li>
<a href="#four" data-toggle="tab">
<i class="fa fa-compress" aria-hidden="true"></i>
<span class="li-text">Reconnects</span>
</a>
</li>
<li>
<a href="#five" data-toggle="tab">
<i class="fa fa-battery-full" aria-hidden="true"></i>
<span class="li-text">Charge</span>
</a>
</li>
</ul>
</div>
。