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

Can I create model in Django without automatic ID?

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

我正在使用 Django 1.7。

可以创建一个没有自增键的模型,但是您不能创建一个没有主键的模型。

来自Django Documentation

If Django sees you’ve explicitly set Field.primary_key, it won’t add the automatic id column.

Each model requires exactly one field to have primary_key=True (either explicitly declared or automatically added).

不,你不能。摘自documentation

Each model requires exactly one field to have primary_key=True (either explicitly declared or automatically added).

我找到了解决方案。

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

中的元和组
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')

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

谢谢大家