2009-11-04 21 views
6

Tengo entradas de claves externas en mi modelo que me gustaría usar para mis campos de elección ... ahora no estoy tan seguro de cómo hacerlo ... mi archivo de modelo puede se encuentra here Básicamente quiero tener un campo de elección para la marca, el modelo, el año, el estilo del cuerpo, el color exterior y la transmisión del vehículo. Como todos ellos trabajan de la misma manera, solo necesito que alguien me señale en la dirección correcta, entonces estoy listo.Seleccione el campo ForeignKey en el formulario ChoiceField

class Model(models.Model): 
    model = models.CharField(max_length=15, blank=False) 
    manufacturer = models.ForeignKey(Manufacturer) 
    date_added = models.DateField() 
    def __unicode__(self): 
     name = ''+str(self.manufacturer)+" "+str(self.model) 
     return name 

class BodyStyle(models.Model): 
    doors = models.PositiveSmallIntegerField() 
    passengers = models.PositiveSmallIntegerField() 
    style = models.CharField(max_length=15, blank=False) 
    def __unicode__(self): 
     name = str(self.doors)+" Door/"+str(self.passengers)+" Passenger/"+str(self.style) 
     return name 

Respuesta

15

Quizás esté buscando ModelChoiceField?

Para usarlo, podría escribir algo como:

class VehicleForm(forms.Form): 
    series = ModelChoiceField(queryset=Series.objects.all()) # Or whatever query you'd like 

luego hacer lo mismo para los otros campos.

Por supuesto, probablemente usaría un ModelForm, pero eso es sólo un ejemplo. ¿Es eso lo que estás buscando?

+0

Creo que esto es más de lo que quiero ... déjame probarlo en un par de minutos y luego veré si funciona. –

+0

funciona bien :) solo un problema ... el estilo del cuerpo y el modelo del modelo no devuelven solo el nombre del modelo, p. Ej. MDX en mi modelo Unicode ... da el modelo make plus, así que esto es lo que obtengo en mi forma, pero solo quiero el modelo. Lo mismo para el estilo ... ver mi edición anterior para la definición del modelo –

+0

No estoy seguro de entender por completo lo que está diciendo (estoy enfermo, mi percepción está fuera de lugar ... :)) pero creo que lo que quiere es usar 'label_from_instance' que le permite modificar la salida del campo. Si googleas eso, deberías encontrar algunos ejemplos. – Bartek

Cuestiones relacionadas