0

奇妙な動作が発生していますが、その理由はよくわかりませんが、現在、別のビューで問題なくこれを実行できます。

問題は次のとおりです。 新しいレコードを作成してデータベースに保存していますが、保存後、レコードがエラーなしで DB に挿入されているにもかかわらず、新しいレコードの ID が NULL になりません。

私のコード:

    r = KsProjectRewards()
    r.project_id = project_id
    r.reward_description_short = desc_short
    r.reward_description_long = desc_long
    r.limit_max = limit
    r.international_info = international
    r.is_active = active
    r.save()

    r.id  # <!-- THIS RETURNS NULL

これが私のモデルです

class KsProjectRewards(models.Model):
    id = models.IntegerField(primary_key=True)
    project_id = models.IntegerField()
    reward_description_short = models.CharField(max_length=75L, blank=True)
    reward_description_long = models.CharField(max_length=500L, blank=True)
    num_backers = models.IntegerField(null=True, blank=True)
    limit_count = models.IntegerField(null=True, blank=True)
    limit_max = models.IntegerField(null=True, blank=True)
    limit_met = models.IntegerField(null=True, blank=True)
    delivery_date = models.DateTimeField(null=True, blank=True)
    international_info = models.CharField(max_length=200L, blank=True)
    date_added = models.DateTimeField()
    date_updated = models.DateTimeField(null=True, blank=True)
    is_active = models.IntegerField()
    class Meta:
        db_table = 'ks_project_rewards'
4

2 に答える 2

3

モデルから次の行を削除して、 djangoに主キーを自動的に作成させるだけです。id

id = models.IntegerField(primary_key=True)

または、明示的に定義する場合は、自動インクリメントする場合は次のようにする必要がありAutoFieldます。

id = models.AutoField(primary_key=True)
于 2013-08-26T15:41:21.080 に答える
1

モデルから次の行を削除してみてください。

id = models.IntegerField(primary_key=True)

Django は自動インクリメント フィールドを処理します。

于 2013-08-26T16:15:37.810 に答える