我可以在没有自动 ID 的情况下在 Django 中创建模型吗?
Can I create model in Django without automatic ID?
我需要一个没有主键的 table(在 Django 中它是自动创建的)。所以我的问题是:我可以创建一个没有 ID/primary 键的模型吗?
我正在使用 Django 1.7。
您可以创建一个没有自增键的模型,但是您不能创建一个没有主键的模型。
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
谢谢大家
我需要一个没有主键的 table(在 Django 中它是自动创建的)。所以我的问题是:我可以创建一个没有 ID/primary 键的模型吗?
我正在使用 Django 1.7。
您可以创建一个没有自增键的模型,但是您不能创建一个没有主键的模型。
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
谢谢大家