forms.py TimeField 出現這樣'str' object has no attribute 'strftime'

17 views
Skip to first unread message

SeedSeek

unread,
Jan 15, 2012, 9:05:33 PM1/15/12
to Uliweb
Uliweb v813
Add 時
forms.py

From = TimeField(label=_('<span style="color:green;">From'),
default='00:00:00')
出現 'str' object has no attribute 'strftime'

From = TimeField(label=_('<span style="color:green;">From'))
正常


Edit 時,欄位內有時間
forms.py

From = TimeField(label=_('<span style="color:green;">From'))
出現 'str' object has no attribute 'strftime'

limodou

unread,
Jan 15, 2012, 9:09:02 PM1/15/12
to uli...@googlegroups.com
2012/1/16 SeedSeek <frt5...@gmail.com>:

它的缺省值应该是和对应字段相匹配的datetime类型,而不是字符串。

--
I like python!
UliPad <<The Python Editor>>: http://code.google.com/p/ulipad/
UliWeb <<simple web framework>>: http://code.google.com/p/uliweb/
My Blog: http://hi.baidu.com/limodou

SeedSeek

unread,
Jan 15, 2012, 9:42:16 PM1/15/12
to Uliweb
出現的錯誤訊息是這樣的

'str' object has no attribute 'strftime'
/home/cl/uliweb_AIO/myproject/mylite/st-2/uliweb/uliweb/form/
uliform.py in to_html, line 767

本來以為是postgresql 的問題
換到sqlite 也是這樣

On Jan 16, 10:09 am, limodou <limo...@gmail.com> wrote:
> 2012/1/16 SeedSeek <frt524...@gmail.com>:

limodou

unread,
Jan 15, 2012, 9:43:16 PM1/15/12
to uli...@googlegroups.com
On Mon, Jan 16, 2012 at 10:42 AM, SeedSeek <frt5...@gmail.com> wrote:
> 出現的錯誤訊息是這樣的
> 'str' object has no attribute 'strftime'
> /home/cl/uliweb_AIO/myproject/mylite/st-2/uliweb/uliweb/form/
> uliform.py in to_html, line 767
>
> 本來以為是postgresql 的問題
> 換到sqlite 也是這樣
>

把default改为datetime相对应的对象,而不是字符串。

SeedSeek

unread,
Jan 15, 2012, 9:48:10 PM1/15/12
to Uliweb
forms.py
From = TimeField(label=_('<span style="color:green;">From'),
default='%H:%M:%S')
這樣也是錯的


在Edit 的時候並沒有使用 default 還是錯誤


models.py
From = Field(datetime.time, verbose_name="From")

On Jan 16, 10:43 am, limodou <limo...@gmail.com> wrote:

limodou

unread,
Jan 15, 2012, 10:09:05 PM1/15/12
to uli...@googlegroups.com
On Mon, Jan 16, 2012 at 10:48 AM, SeedSeek <frt5...@gmail.com> wrote:
> forms.py
>    From = TimeField(label=_('<span style="color:green;">From'),
> default='%H:%M:%S')
>    這樣也是錯的
>
>
> 在Edit 的時候並沒有使用 default 還是錯誤
>
>
> models.py
>    From = Field(datetime.time, verbose_name="From")
>
>

default是一个值,不是一个字符串啊。

SeedSeek

unread,
Jan 15, 2012, 11:53:44 PM1/15/12
to Uliweb
不用default 是沒有影響,只是為了確認是不是因為時間會錯誤
沒default Add 可以正常

Edit 本來就沒有設定default
讀出資料 還是報錯


On Jan 16, 11:09 am, limodou <limo...@gmail.com> wrote:

limodou

unread,
Jan 16, 2012, 12:11:52 AM1/16/12
to uli...@googlegroups.com
2012/1/16 SeedSeek <frt5...@gmail.com>:

> 不用default 是沒有影響,只是為了確認是不是因為時間會錯誤
> 沒default Add 可以正常
>
> Edit 本來就沒有設定default
> 讀出資料 還是報錯
>

不管是default还是传入的Data,它要的是和datetime相匹配的对象,注意不是字符串。

SeedSeek

unread,
Jan 16, 2012, 12:29:46 AM1/16/12
to Uliweb
User = get_model('user')
user = User.get(id)
data = use.to_dict()

form = UserEditForm(data=data)

好像知道問題在哪了
應該是to_dict() 的關係

還有其他好方法叫出資料的嗎?

On Jan 16, 11:09 am, limodou <limo...@gmail.com> wrote:

limodou

unread,
Jan 16, 2012, 12:31:17 AM1/16/12
to uli...@googlegroups.com
On Mon, Jan 16, 2012 at 1:29 PM, SeedSeek <frt5...@gmail.com> wrote:
> User = get_model('user')
> user = User.get(id)
> data = use.to_dict()
>
> form = UserEditForm(data=data)
>
> 好像知道問題在哪了
> 應該是to_dict() 的關係
>
> 還有其他好方法叫出資料的嗎?
>

to_dict有一个convert的参数,设为False,就不转了。

SeedSeek

unread,
Jan 16, 2012, 12:43:36 AM1/16/12
to Uliweb
to_dict(conver=False)

FloatField 的部分會就有多出很多小數點位數

有DateTime 都不轉的方法嗎?


On Jan 16, 1:31 pm, limodou <limo...@gmail.com> wrote:

limodou

unread,
Jan 16, 2012, 1:21:59 AM1/16/12
to uli...@googlegroups.com
2012/1/16 SeedSeek <frt5...@gmail.com>:

> to_dict(conver=False)
>
> FloatField 的部分會就有多出很多小數點位數
>
> 有DateTime 都不轉的方法嗎?
>

因为浮点数可能就是有许多位数的啊。不转你可以直接从数据库的实例获得对应的属性,比:

User = get_mode('user')
u = User.get(1)
u.birthday

这不就行了吗?自已组一个dict?这块自已处理一下就可以了。

SeedSeek

unread,
Jan 16, 2012, 2:01:39 AM1/16/12
to Uliweb
FloatField
這邊輸入了兩位小數 0.66
儲存後 多了很多個小數點位數

有方法可以避免嗎?

另一個問題
models.py
Field(DECIMAL, verbose_name="GST Rate(%)", scale=2)
scale=2 是指只能輸入兩位小數嗎?

limodou

unread,
Jan 16, 2012, 6:44:31 AM1/16/12
to uli...@googlegroups.com
2012/1/16 SeedSeek <frt5...@gmail.com>:

> FloatField
> 這邊輸入了兩位小數 0.66
> 儲存後 多了很多個小數點位數
>
> 有方法可以避免嗎?

这个要自已去处理,浮点数不是定长小数位数的。

>
> 另一個問題
> models.py
> Field(DECIMAL, verbose_name="GST Rate(%)", scale=2)
> scale=2 是指只能輸入兩位小數嗎?
>

是的。

http://uliweb.readthedocs.org/en/latest/orm.html#decimalproperty

SeedSeek

unread,
Jan 16, 2012, 8:35:55 AM1/16/12
to Uliweb
scale=2
輸入3位以上小數也可以存得進資料庫

On Jan 16, 7:44 pm, limodou <limo...@gmail.com> wrote:
> 2012/1/16 SeedSeek <frt524...@gmail.com>:
>

limodou

unread,
Jan 16, 2012, 8:44:42 AM1/16/12
to uli...@googlegroups.com
2012/1/16 SeedSeek <frt5...@gmail.com>:
> scale=2
> 輸入3位以上小數也可以存得進資料庫
>

这个主要看数据库。象sqlite是没有限制,但是mysql会截取。

Reply all
Reply to author
Forward
0 new messages