これは奇妙です。
django モデルのインスタンスを作成してデータベースに保存しましたが、もう一度思い出すと、値が間違った列に表示されています。ライブラリの構成に誤りがあるのではないかと考えて、コードを別のマシンに移動しようとしましたが、そこでも失敗しました。私はいくつかの広範なグーグル検索を行いましたが、私のような問題は見つかりませんでした.
モデル定義は次のとおりです: (__init__
それが重要な場合は、定義済み)
class Buffer(models.Model):
b_bname = models.CharField(max_length=60)
b_tdate = models.DateField() # date of transaction
b_bdate = models.DateField() # date at bank
b_bamnt = models.FloatField()
b_descript = models.CharField(max_length=120)
b_kind = models.CharField(max_length=12)
b_account = models.CharField(max_length=40)
def __init__(self, name, *args, **kwargs):
super(Buffer, self).__init__(*args, **kwargs)
self.b_bname = name
失敗の例を次に示します。
% python manage.py shell
Python 2.7.3 (default, Aug 4 2012, 18:36:39)
[GCC 4.2.1 20070831 patched [FreeBSD]] on freebsd9
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from buffer.models import Buffer
>>> b = Buffer('schwab')
>>> b.b_tdate = '2008-11-03'
>>> b.b_bdate = '2009-01-20'
>>> b.b_bamnt = 3.1415
>>> b.b_descript = 'easy as pi'
>>> b.b_kind = 'POS'
>>> b.b_account = 'groceries'
>>> b.save()
(0.002) INSERT INTO "buffer_buffer" ("b_bname", "b_tdate", "b_bdate", "b_bamnt", "b_descript", "b_kind", "b_account") VALUES (schwab, 2008-11-03, 2009-01-20, 3.1415, easy as pi, POS, groceries); args=['schwab', u'2008-11-03', u'2009-01-20', 3.1415, 'easy as pi', 'POS', 'groceries']
(0.002) INSERT INTO "buffer_buffer" ("b_bname", "b_tdate", "b_bdate", "b_bamnt", "b_descript", "b_kind", "b_account") VALUES (schwab, 2008-11-03, 2009-01-20, 3.1415, easy as pi, POS, groceries); args=['schwab', u'2008-11-03', u'2009-01-20', 3.1415, 'easy as pi', 'POS', 'groceries']
>>> b.pk
1
>>> c = Buffer.objects.get(pk=1)
(0.000) SELECT "buffer_buffer"."id", "buffer_buffer"."b_bname", "buffer_buffer"."b_tdate", "buffer_buffer"."b_bdate", "buffer_buffer"."b_bamnt", "buffer_buffer"."b_descript", "buffer_buffer"."b_kind", "buffer_buffer"."b_account" FROM "buffer_buffer" WHERE "buffer_buffer"."id" = 1 ; args=(1,)
(0.000) SELECT "buffer_buffer"."id", "buffer_buffer"."b_bname", "buffer_buffer"."b_tdate", "buffer_buffer"."b_bdate", "buffer_buffer"."b_bamnt", "buffer_buffer"."b_descript", "buffer_buffer"."b_kind", "buffer_buffer"."b_account" FROM "buffer_buffer" WHERE "buffer_buffer"."id" = 1 ; args=(1,)
>>> c.b_bname
1
>>> c.b_tdate
datetime.date(2009, 1, 20)
>>> c.b_bdate
3.1415
>>> c.b_bamnt
u'easy as pi'
>>> c.b_kind
u'groceries'
>>> c.b_account
''
>>>
% sqlite3 register
SQLite version 3.7.13 2012-06-11 02:05:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select count(id) from buffer_buffer;
1
sqlite> select b_bamnt from buffer_buffer;
3.1415
ご覧のとおり、データベースは正しいですが、取得されたオブジェクトは間違っています。私はどこを台無しにしましたか?ここのどこかにバグがあるに違いない。私は今、それを1日以上狩り続けています。
環境: Python 2.7、Django 1.4、バックエンドとして sqlite 3.7、FreeBSD 9.0