J'ai un modèle où un champ fait référence à une clé étrangère d'un autre modèle comme:rendu champ étranger sous forme de django
class DummyModel(models.Model):
name = models.CharField(max_length=100)
description = models.CharField(max_length=150)
image_type = models.ForeignKey(ImageTypeModel) # Foreign key
class Meta:
db_table = "dummy"
Le modèle parent est aussi simple:
class ImageTypeModel(models.Model):
name = models.CharField(max_length=100)
dims = models.IntegerField()
class Meta:
db_table = "imagetypes"
Maintenant, je tente pour rendre un enregistrement sous une forme et à cette fin j'utilise django-crispy-forms
. Donc, j'ai:
class DummyForm(ModelForm):
class Meta:
model = DummyModel
fields = ['name', 'description', 'image_type']
def __init__(self, *args, **kwargs):
super(DummyForm, self).__init__(*args, **kwargs)
self.helper = FormHelper(self)
self.helper.form_class = 'form-horizontal'
self.helper.label_class = 'col-sm-2'
self.helper.field_class = 'col-sm-10'
#self.helper.form_tag = False
self.helper.layout = Layout(
Field('name'),
Field('description'),
Field('image_type'))
Le champ image_type
rend comme une liste déroulante qui est parfait, mais au lieu du nom des types d'image, les entrées sont tous étiquetés ImageTypeModel
. Y at-il un mécanisme pour que je puisse afficher le nom correspondant de l'enregistrement ImageTypeModel
mais lorsque le formulaire est enregistré, il enregistre la clé primaire plutôt que le nom.
Avez-vous mis en œuvre la méthode '__unicode__' (pour Python 2) ou' __str__' (python 3) à l'intérieur du modèle 'de ImageTypeModel'? –
hmmmmmm ... non. Ok, je ne savais pas que je devais le faire! – Luca
Cela a fait l'affaire! Voulez-vous l'écrire comme réponse pour que je puisse l'accepter?> – Luca