2012-02-17 8 views
12

Me parece que no puede encontrar la manera de manejar la situación adecuadamente siguiente en Django:¿Cómo representar dos campos modelo como un campo de formulario en Django?

Tengo un intervalo de fechas en un modelo, que guardo como dos campos separados, date_start y date_end:

start_date = models.DateTimeField() 
end_date = models.DateTimeField() 

En la forma para este modelo, quiero representar esto como un campo, con una etiqueta:

timespan = forms.Field(widget=widgets.SelectDateRangeWidget(), label="Date Range") 

como es ahora, EXT MultiWidget terminado de crear el SelectDateRangeWidget:

class SelectDateRangeWidget(forms.MultiWidget): 
    ... 

Que a su vez incorpora dos Date widgets. Quiero utilizar esto, pero luego lo limpio en dos campos de modelo separados y también conserva la capacidad de cargar datos iniciales en el campo de formulario. Es la única forma de establecer manualmente initial en el valor de esos dos campos todas las veces, tal vez en la función __init__ del formulario, y también limpiarlo manualmente en esos dos campos de modelo, o hay una manera más limpia (por así decirlo) de ¿hacer esto?

+0

No veo cuál es el problema: extraiga sus dos fechas y guárdelas en el modelo. – Marcin

+0

@marcin: ¿Cómo configuro el valor 'inicial' en el valor de los dos campos del modelo de una manera que tenga sentido y no piratee la función __init__ del formulario? ¿Me estoy perdiendo algo obvio? –

+0

¿qué hay de malo en establecer el parámetro 'initial' para cada campo? – Marcin

Respuesta

10

Parece que no es posible en django con la API actual de widgets. El boleto es uno de los boletos django más antiguos, tiene 7 años: https://code.djangoproject.com/ticket/27.

Puede excluir 2 campos originales del formulario del modelo, crear un nuevo campo y anular el método de guardar del formulario.

+2

Gracias! No puedo creer que tropecé con una solicitud tan antigua y aún sin resolver –

+0

¿Sabes cuál es la última actualización de esto? – Algorithmatic

Cuestiones relacionadas