web-dev-qa-db-ja.com

自動IDなしでDjangoでモデルを作成できますか?

主キーのないテーブルが必要です(Djangoこれは自動的に作成されました)。したがって、私の質問は次のとおりですID /主キーなしでモデルを作成できますか?

Django 1.7を使用しています。

13
HQM

自動インクリメントキーなしでモデルを作成できますが、できません主キーなしで作成します。

Django Documentation から:

Djangoの場合、明示的に設定したことがわかります Field.primary_key 、自動ID列は追加されません。

各モデルでは、primary_key=True(明示的に宣言されるか、自動的に追加されます)。

25
Selcuk

いいえ、できません。 documentation からの抜粋:

各モデルでは、primary_key = True(明示的に宣言されるか、自動的に追加される)を持つために、フィールドが1つだけ必要です。

7
catavaran

解決策を見つけました。

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')

makemigrationsを実行すると、マイグレーションスクリプトにIDフィールドがありません:D

みんなありがとう

2
HQM