On Tue, Sep 16, 2008 at 3:13 PM, David Durham, Jr.
<[EMAIL PROTECTED]> wrote:
> Hi all,
>
> I'm working through a simple wizard using the formtools wizard stuff.
> My issue is that my forms don't display with niceties such as date
> time popup and foreign key 'add' options. Is there something extra
> that has to be done for these features?
So tackling the first issue I've got something working, but I'm not
particularly proud of it. To get a "DatePicker" on a
models.DateField, I had to kind of hack things up a bit with custom
Model Field:
from django import forms
from django.db.models import DateField
class CSSDateField(DateField):
def formfield(self, **kwargs):
defaults = {'widget' : forms.TextInput(attrs={'class':'date'})}
defaults.update(kwargs)
return super(DateField, self).formfield(**defaults)
Then in my Model I do something like
class MyModel(models.Model):
starts_on = CSSDateField()
Then in my form template, I use jquery and do something like:
$("input.date").datetimepicker()
Like I said, I don't really like this solution, and I'm hoping there's
a better one. My thinking is that the best way would be to hook this
kind of thing into a ModelForm Meta class. Specifically, the
ModelForm would know to add this css class to DateFields based on some
configuration in the Meta class. Maybe this already exists, and I
just don't know it.
The other thing I thought is that if I'm going to create a custom
model Field just to add a css class, then it would be better to just
add an argument like widget_attrs={'css' : 'some_class'}. Maybe a
purist would say, oh, you've coupled your model with your view, and I
kind of agree, so I think the ModelForm magic would be better, but end
the end, there was already a coupling so I really don't care, but want
to define this in one spot.
Thanks in advance.
-Dave
> Just as a simple test, I reduced things to this:
>
> in forms.py:
>
> class EstimateForm1(forms.Form):
> start_on = forms.DateField(widget=forms.DateTimeInput)
>
> class EstimateWizard(FormWizard):
> def done(self, request, form_list):
> return render_to_response('done.html', {
> 'form_data': [form.cleaned_data for form in form_list],
> })
>
>
> in urls.py
>
> (r'^estimate/$', EstimateWizard([EstimateForm1])),
>
>
> and wizard.html:
>
> {% extends "admin/base_site.html" %}
>
> {% block content %}
> <p>Step {{ step }} of {{ step_count }}</p>
> <form action="." method="post">
> <table>
> {{ form.as_table }}
> </table>
> <input type="hidden" name="{{ step_field }}" value="{{ step0 }}" />
> {{ previous_fields|safe }}
> <input type="submit" value="Next">
> </form>
> {% endblock %}
>
> Thanks for any help,
> DAve
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---