sábado, 29 de noviembre de 2008

Generando formularios de modelos en Django

Es muy fácil generar formularios basándonos en los datos definidos en un modelo (esto está ampliamente documentado en el sitio de Django, excepto:
1) cómo setear los ítems que debe contener el SELECT correspondiente a un campo ForeignKey
2) cómo cambiar el nombre del campo que debe aparecer en el formulario autogenerado

(marqué en rojo la manera que encontré para resolver estas 2 cuestiones).

Modelo:

from django.db import models
from django.contrib.auth.models import User

class Proyecto(models.Model):
name = models.CharField(max_length=256, verbose_name="Nombre")
customer = models.ForeignKey(to=User, verbose_name="Cliente")


Formulario:

from django import forms

class ProyectoForm(forms.ModelForm):

class Meta:
model = Proyecto
fields = ('name', 'customer')


Vista:

    if request.POST:
form = ProyectoForm(request.POST)
else:
form = ProyectoForm()

form.fields['customer'].queryset = User.objects.all().reverse()

No hay comentarios: