我可以在没有自动ID的情况下在Django中创建模型吗?

时间:2015-02-14 13:26:12

标签: python django orm model

我需要一个没有主键的表(在Django中它是自动创建的)。所以我的问题是:我可以创建没有ID /主键的模型吗?

我正在使用Django 1.7。

3 个答案:

答案 0 :(得分:25)

可以创建没有自动递增键的模型,但无法创建没有主键的模型。

来自Django Documentation

  

如果Django发现您已明确设置Field.primary_key,则不会添加自动ID列。

     

每个模型只需要一个字段即可primary_key=True(显式声明或自动添加)。

答案 1 :(得分:7)

不,你不能。摘录自documentation

  

每个模型只需要一个字段即可使primary_key = True(显式声明或自动添加)。

答案 2 :(得分:4)

我找到了解决方案。

由于django需要主键(它是复合键或单字段ID)所以,我试图在其复合键组合的每个字段中设置primary_key = True,并在Meta中添加这些字段并在unique_together中添加组< / p>

class ReportPvUv(models.Model):
    report_id = models.ForeignKey(Reports, primary_key=True)
    rdate = models.DateField(primary_key=True)
    fdate = models.DateTimeField(primary_key=True)
    ga_pv = models.BigIntegerField()
    ga_uv = models.BigIntegerField()
    ur_pv = models.BigIntegerField()
    ur_uv = models.BigIntegerField()
    da_pv = models.BigIntegerField()
    da_uv = models.BigIntegerField()

    class Meta:
        db_table = 'report_pv_uv'
        unique_together = ('report_id', 'rdate', 'fdate')

当我运行makemigrations时,它的迁移脚本中没有ID字段:D

谢谢大家