Thursday, July 4, 2013

Re: Django date format issue

form example:


class NewsForm(ModelForm):
    class Meta:
        model = News
        exclude = ('id', 'Url', 'resume', 'Time_Stamp')
        widgets = {
                   'Tag': CheckboxSelectMultiple(attrs={'class': 'tag'}),
                   'Category': CheckboxSelectMultiple(
                                                attrs={'class': 'category'}),
                   }


2013/7/4 Rafael E. Ferrero <rafael.ferrero@gmail.com>
I'm not shore if what i did its fine or not but works, otherwise i see you put some twist to the problem... nevertheless what i do its:
In Settings set properly the time_zone and use_l10n=true... then in my model use something like ...models.DateTimeField('Creation Date', default=datetime.now())...
then in templates use a filter like ...|date:"D d/m/Y"... to render the date in format "day-name" dd/mm/yyyy.
In the form.py just use standard, exclude some fields, use some widget... but keep simplicity.

hope to help you a little.

Cheers


2013/7/4 Sivaram R <sivaram2287@gmail.com>
views.py

def calender(request):        """"""      settingsform = SettingsForm(instance=settings)      if request.method == 'POST':          reportform = ReportDateTimeForm(request.POST, instance=report)          if reportform.is_valid():              report = reportform.save(commit=False)              report.user = request.user              report.save()      if settings and settings.date_format:          date = report.manual_date.strftime(reportform.fields['manual_date'].input_formats[1])          createddate = report.created_date_time.strftime('%b %d %Y')      else:          date = report.manual_date.strftime(reportform.fields['manual_date'].input_formats[0])          createddate = report.created_date_time.strftime('%d %b %Y')      """"""       return render_to_response('calender.html',                                 {                                  'reportform': reportform,                                  'settings': settings,                                  'settingsform':settingsform                                   },                                   context_instance=RequestContext(request))

forms.py

DATE_FORMAT = ( ('0', ' dd / mm / yyyy'), ('1', 'mm / dd / yyyy'), ) DATE_INPUT_FORMAT = ['%d/%m/%Y','%m/%d/%Y'] class ReportDateTimeForm(forms.ModelForm): manual_date = forms.DateField(input_formats = DATE_INPUT_FORMAT, widget=forms.DateInput(format = '%d/%m/%Y')) class SettingsForm(forms.ModelForm): date_format = forms.ChoiceField(widget=forms.RadioSelect(), choices=DATE_FORMAT, initial='0')


views.py

def calender(request):        """"""      settingsform = SettingsForm(instance=settings)      if request.method == 'POST':          reportform = ReportDateTimeForm(request.POST, instance=report)          if reportform.is_valid():              report = reportform.save(commit=False)              report.user = request.user              report.save()      if settings and settings.date_format:          date = report.manual_date.strftime(reportform.fields['manual_date'].input_formats[1])          createddate = report.created_date_time.strftime('%b %d %Y')      else:          date = report.manual_date.strftime(reportform.fields['manual_date'].input_formats[0])          createddate = report.created_date_time.strftime('%d %b %Y')      """"""       return render_to_response('calender.html',                                 {                                  'reportform': reportform,                                  'settings': settings,                                  'settingsform':settingsform                                   },                                   context_instance=RequestContext(request))

forms.py

DATE_FORMAT = (      ('0', ' dd / mm / yyyy'),      ('1', 'mm / dd / yyyy'),  )  DATE_INPUT_FORMAT = ['%d/%m/%Y','%m/%d/%Y']    class ReportDateTimeForm(forms.ModelForm):      manual_date = forms.DateField(input_formats = DATE_INPUT_FORMAT,                        widget=forms.DateInput(format = '%d/%m/%Y'))    class SettingsForm(forms.ModelForm):      date_format = forms.ChoiceField(widget=forms.RadioSelect(), choices=DATE_FORMAT, initial='0')

If no values are saved in settings table,it is showing the default date format.If any value is saved eg:if the selecetd format is dd/mm/yyyy in db it is saved as 0.But in calender page it is displayed as mm/dd/yyyy format,it is showing mm/dd/yyyy format for both date format,it seems like for default it is showing the correct format,if any values are saved it is always showing this format mm/dd/yyyy

Any help is greatly appreciated.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
For more options, visit https://groups.google.com/groups/opt_out.
 
 



--
Rafael E. Ferrero
Claro: (03562) 15514856



--
Rafael E. Ferrero
Claro: (03562) 15514856

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate