Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django模型在错误列中返回值_Django_Sqlite_Django Models - Fatal编程技术网

Django模型在错误列中返回值

Django模型在错误列中返回值,django,sqlite,django-models,Django,Sqlite,Django Models,这太奇怪了 我创建了django模型的一个实例,并将其保存到数据库中,但是当我再次调用它时,值出现在错误的列中。我试着将代码转移到另一台机器上,认为我可能有一些库的错误配置,但也失败了。我做了一些广泛的谷歌搜索,但没有发现任何类似的问题,我的 以下是模型定义:(定义了\uuuuu init\uuuu,如果需要的话) 以下是失败的一个例子: % python manage.py shell Python 2.7.3 (default, Aug 4 2012, 18:36:39) [GCC 4.

这太奇怪了

我创建了django模型的一个实例,并将其保存到数据库中,但是当我再次调用它时,值出现在错误的列中。我试着将代码转移到另一台机器上,认为我可能有一些库的错误配置,但也失败了。我做了一些广泛的谷歌搜索,但没有发现任何类似的问题,我的

以下是模型定义:(定义了
\uuuuu init\uuuu
,如果需要的话)

以下是失败的一个例子:

% 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
如您所见,数据库是正确的,但检索到的对象是错误的。我哪里搞砸了?我一定是在什么地方有虫。我已经找了一天多了


环境:Python2.7、Django 1.4、sqlite 3.7作为后端,FreeBSD 9.0

不要更改模型的
\uuuuuu init\uuuu
方法的类型签名以获取
名称
参数。它不仅在shell中创建实例时调用,而且在初始化实例时调用,包括从db获取实例时

当您可以使用如下命名参数时,不清楚为什么需要重写
\uuuu init\uuuu
方法:

b=缓冲区(name='schwab')


如果您想在创建新实例时使用方便方法,请考虑使用CREATE方法创建自定义管理器。例如,看看这个方法,它负责对密码进行哈希运算。

看起来一切正常。只需尝试将
self.b_bname=name
移到
super()上方即可。
提前移动作业不会改变结果:-(
% 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