2016-08-13 128 views
1

首先,這個問題已被問到here,但是答案不起作用,並且也適用於Django 1.3。在對SO,Django Docs和Google一般搜索等類似問題進行了大量研究之後,我仍然找不到有效的答案。不是一個真正的主要細節,但是在嘗試使用我創建的表單時,以及因爲我無法解決這個問題而煩惱。使用Django SelectDateWidget設置默認日期

在ModelForm中使用SelectDateWidget時,我希望能夠將小部件的默認設置設置爲今天的日期。

forms.py

from django import forms 
from .models import Article 
from django.utils import timezone 

class ArticleForm(forms.ModelForm): 
publish=forms.DateField(widget=forms.SelectDateWidget(), initial = timezone.now) 
class Meta: 
    model = Article 
    fields = [ 
    'title', 

     ... 

    'publish', 
    ] 

models.py

from django.conf import settings 
from django.core.urlresolvers import reverse 
from django.db import models 
from django.utils import timezone 

from Blog.models import Category 

class Article(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL) 
    title = models.CharField(max_length = 120, unique=True) 

     ... 

    publish = models.DateField(default=timezone.now) 

我假設我有一些語法錯誤的地方,但有過發現它沒有喜悅。

+0

你會得到什麼錯誤? –

+0

@ v.s.danilov我本身並沒有遇到錯誤,只是小部件從未被預設更改爲2016年1月1日,無論我如何玩模型或ModelForm –

回答

1

設置DateTimeFieldDateField的默認時間時,看起來存在細微差別。

DateField.auto_now_add當首次創建對象 時,自動將該字段設置爲now。用於創建時間戳。請注意, 總是使用當前日期;它不僅是您可以覆蓋的默認值。所以即使您在創建對象時爲此字段設置了一個值,它也會被忽略。如果您希望能夠 修改此字段中,設置以下的,而不是auto_now_add = TRUE:

爲的DateField:默認= date.today - 從datetime.date.today() 對於DateTimeField字段:默認= timezone.now - 從django.utils.timezone.now()

所以,你需要使用date.today而非timezone.now

+0

完美地工作,謝謝親切 –