2011-05-10 64 views
6

我是django開發的新手。我創建可能分配有多個B類A類:當我試圖創建在管理頁面了新的「A」元素,併爲它創造一個匹配的元素B,然後django'DateTimeField'沒有默認值錯誤

class A(models.Model):   
    name = models.CharField(max_length=200)  

    def __unicode__(self): 
     self.name 


class B(models.Model): 
    a = models.ForeignKey(A) 
    name = models.CharField(max_length=200) 
    mydate = models.DateTimeField('party date') 

save()字段「指明MyDate」沒有默認值

如果我移動「指明MyDate」,元至A級,然後我得到一個消息此:save(),我收到警告字段需要Django的,需要我填寫該字段!

當日期字段是B的一部分時,我怎麼能使這個所需的消息也出現!

感謝

+0

你需要一個很好的答案在這裏添加更多詳細信息。你如何「創建一個匹配元素B」?它是在'''''save'方法中完成的,作爲'post_save'信號的一部分嗎?還是你真的要進入'B'的管理員添加/更改頁面並從那裏進行?根據不同的方法,你的問題的答案可能會大不相同。 – 2011-05-10 21:44:19

+0

是的,我試圖通過A元素保存()!我不知道什麼是post_save,但我認爲它被稱爲每個B我保存在一起A – sramij 2011-05-11 17:04:57

回答

12

如果沒有指定,那你的字段是可選的,你將不得不在每次創建對象時爲它提供一個值。你的情況,你不能這樣,你將不得不做的事情之一:

這裏是如何使現場可選:

class B(models.Model): 
    a = models.ForeignKey(A) 
    name = models.CharField(max_length=200) 
    mydate = models.DateTimeField('party date', blank=True, null=True) 

這裏是你如何設置默認值:

import datetime 

class B(models.Model): 
    a = models.ForeignKey(A) 
    name = models.CharField(max_length=200) 
    mydate = models.DateTimeField('party date', default=datetime.datetime.now) 
+0

我不得不移動到sqlit也使其工作! aditionaly to u'r proposal – sramij 2011-05-11 17:03:16

+0

@sramij,不需要更改數據庫引擎,只需使用'suncdb'重新創建數據庫即可。 – 2011-05-12 06:24:05

0

從我的理解,django會嘗試驗證模型A,然後返回驗證錯誤。由於A驗證,它會嘗試寫入A,因爲B不驗證而失敗。我不確定如何優雅地做到這一點,但如果您在驗證A之前嘗試自行評估表格B,您將看到「此字段是必需的」消息,然後您可以向用戶顯示該消息。

4

有在Django

from django.utils import timezone 
class B(models.Model): 
    a = models.ForeignKey(A) 
    name = models.CharField(max_length=200) 
    mydate = models.DateTimeField('party date', default=timezone.now) 

的實用功能,此功能將返回基於USE_TZ DateTime對象settings.py中

def now(): 
    """ 
    Returns an aware or naive datetime.datetime, depending on settings.USE_TZ. 
    """ 
    if settings.USE_TZ: 
     # timeit shows that datetime.now(tz=utc) is 24% slower 
     return datetime.utcnow().replace(tzinfo=utc) 
    else: 
     return datetime.now() 
相關問題