ブック モデルをデータベースに追加し、SQL データベース ブラウザーでブック テーブルを確認すると、id フィールドが空白として表示されます。
テーブルに1000個のアイテムがあるのは奇妙です。そのうち 390 人に ID が入力されているため、何が起こったのかわかりません。その他の ID は空白です。
id フィールドは本質的に主キーであるべきではありませんか? あるケースではどのようにデータが取り込まれ、他のケースでは取り込まれなかったのでしょうか。
注 1: 過去にレコードを手動で削除しましたが、それが問題になるかどうかはわかりません。注 2: Iprint "newbook id:", repr(newbook.id)
の場合、ID は SQL データベース ブラウザーに表示される主キーとは異なります。
これは私が見るものです:
関連するコードは次のとおりです。
モデル:
class Books (models.Model):
bookname=models.CharField(_('bookname'), max_length=255)
publisher=models.CharField(_('publisher'), max_length=255)
description=models.TextField(_('description'), blank=True)
coverart = models.ImageField(upload_to="art", blank=True, null=True)
source=models.TextField(blank=True) #source of where it came from
last_updated=models.DateTimeField(_('added'), default=datetime.now)
category_id=models.ManyToManyField(Category, related_name='cat')
model = models.ManyToManyField ('model', related_name = 'model')
shortdesc=models.TextField(_('description'), blank=True)
url = models.TextField(_('url'), blank=True)
uid = models.IntegerField()`
本を保存するコード:
try:
exists = Books.objects.get(bookname=bookname)
except Books.DoesNotExist:
print "book does not exist -- adding now"
newbook=Books(bookname=bookname, uid = uid, source='Mysourceofbooks', publisher=publisher, description = description, shortdesc=shortdesc, url = url)
newbook.save()
for cat in category_ids:
newbook.category_id.add(cat)
else:
print "log: we found the book in the DB already"`