2016-08-13 138 views
1

まず、この質問にはすでにhereと尋ねられていますが、答えはうまくいかず、Django 1.3でも同じです。 SO、Django Docs、そして一般的なグーグルリングに関する同様の質問について広範な研究を行っても、私はまだうまくいく答えを見つけることができません。本当に大きなディテールはありませんが、作成しているフォームを使用しようとしているときも、解決できないので迷惑です。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日にプリセットされていることは決してありません –

答えて

1

DateTimeFieldDateFieldのデフォルト時間を設定すると、微妙な違いがあるようです。

DateField.auto_now_add オブジェクトが最初に作成されたときに自動的にフィールドを現在に設定します。タイムスタンプの作成に役立ちます。現在の日付は常に であることに注意してください。デフォルト値だけでなく、 を上書きすることもできます。だから、 オブジェクトを作成するときにこのフィールドの値を設定しても、無視されます。 DateFieldのために

:あなたはこのフィールドを変更 にできるようにしたい場合は、真の次の代わりauto_now_add =を設定し、デフォルト= date.today - datetime.date.todayから()DateTimeField型の場合 :デフォルト= timezone.now - django.utils.timezone.nowからは()

だから、あなたはdate.todayではなくtimezone.now使用することをお勧めします。

+0

完全に動作します。 –

関連する問題