J'ai trois classes de modèles qui ont l'air comme ci-dessous:Remplacer textfields avec les champs déroulants sélectionnez
class Model(models.Model):
model = models.CharField(max_length=20, blank=False)
manufacturer = models.ForeignKey(Manufacturer)
date_added = models.DateField(default=datetime.today)
def __unicode__(self):
name = ''+str(self.manufacturer)+" "+str(self.model)
return name
class Series(models.Model):
series = models.CharField(max_length=20, blank=True, null=True)
model = models.ForeignKey(Model)
date_added = models.DateField(default=datetime.today)
def __unicode__(self):
name = str(self.model)+" "+str(self.series)
return name
class Manufacturer(models.Model):
MANUFACTURER_POPULARITY_CHOICES = (
('1', 'Primary'),
('2', 'Secondary'),
('3', 'Tertiary'),
)
manufacturer = models.CharField(max_length=15, blank=False)
date_added = models.DateField(default=datetime.today)
manufacturer_popularity = models.CharField(max_length=1,
choices=MANUFACTURER_POPULARITY_CHOICES)
def __unicode__(self):
return self.manufacturer
je veux avoir les champs pour model
series
et manufacturer
représentée comme dropdowns au lieu des champs de texte. Je mesure les modèles de formulaires comme ci-dessous:
class SeriesForm(ModelForm):
series = forms.ModelChoiceField(queryset=Series.objects.all())
class Meta:
model = Series
exclude = ('model', 'date_added',)
class ModelForm(ModelForm):
model = forms.ModelChoiceField(queryset=Model.objects.all())
class Meta:
model = Model
exclude = ('manufacturer', 'date_added',)
class ManufacturerForm(ModelForm):
manufacturer = forms.ModelChoiceField(queryset=Manufacturer.objects.all())
class Meta:
model = Manufacturer
exclude = ('date_added',)
Cependant, les listes déroulantes sont peuplées de l'unicode dans la classe respective ... Comment puis-je personnaliser ce pour obtenir le résultat final que je veux?
En outre, comment puis-je remplir les formulaires avec les données correctes pour l'édition? Actuellement seulement SeriesForm
est rempli. Le point de départ de tout cela est d'une autre classe dont la déclaration est comme ci-dessous:
class CommonVehicle(models.Model):
year = models.ForeignKey(Year)
series = models.ForeignKey(Series)
....
def __unicode__(self):
name = ''+str(self.year)+" "+str(self.series)
return name
C'est exactement ce que je avais besoin .... laissez-moi essayer. Thnx – Stephen