0

シンプルなdjangoモデルがあります

class Directory(models.Model):

  id = models.AutoField(primary_key=True)
  path = models.TextField(unique=True)

  def __unicode__(self):
    return self.path

  class Meta:
    db_table = u'directories'

ただし、ディレクトリインスタンスをデータベースに保存するには問題があるようです

>>> from cygapp.models import Directory
>>> d = Directory()
>>> d.path = '/usr'
>>> d.id
>>> d.save()
>>> d.id
4
>>> d
<Directory: /usr>

IDフィールドは正しく割り当てられていますが(次の空き値)、データベースには保存されません

sqlite> select * from directories;
1|/bin
2|/system/lib
3|/system/bin
|/usr

ここで何が欠けていますか?

4

1 に答える 1

0

レコードを保存するために行っていることはすべて正しく、自動IDを割り当てる必要があります。

id = models.AutoField(primary_key=True)Djangoが自動的にこれを行うため、カスタムIDフィールドを削除します。次に、「ディレクトリ」テーブルを削除して実行しますpython manage.py syncdb。これにより、モデルに正しいIDフィールドがあることが保証されます。

于 2013-03-15T11:04:40.873 に答える