Vous n'êtes pas identifié(e).
bonjour
voila le probleme
j'ai un modele dont certains champs d'une classe dependent d'une liste comme ceci
PHYSICS_CHOICES = (
('Mechanical', (
('Vickers hardness (GPa)', 'Vickers hardness (Gpa)'),
('Tensile Strength (GPa) ', 'Tensile Strength (GPa)'),
('Elasticity modulus (GPa)', 'Elasticity modulus (GPa)'),
('Shear Modulus (GPa)', 'Shear Modulus (GPa)'),
...........
val_champ = models.CharField(_('val_champ'), max_length=150, choices = PHYSICS_CHOICES)
et dans l'admin, le champ val_champ apparait sous forme de liste deroulante avec toutes les composantes de PHYSICS_CHOICES
comment faut il proceder pour que ces composantes puissent etre definies directement dans l'admin de maniere a eviter d'ecrire en dur dans le code chaque fois que l'on veut rajouter une proprieté...
Hors ligne
Bonjour,
La solution la plus simple est d'utiliser une ForeignKey vers un modèle qui contiendrait les données de PHYSICS_CHOICES. En revanche, la liste apparaitrait "à plat", c'est à dire sans la catégorisation "Mechanical".
Le documentation Django va dans ce sens (https://docs.djangoproject.com/en/dev/r … s/#choices):
Finally, note that choices can be any iterable object – not necessarily a list or tuple. This lets you construct choices dynamically. But if you find yourself hacking choices to be dynamic, you're probably better off using a proper database table with a ForeignKey. choices is meant for static data that doesn't change much, if ever.
En redéfinissant dynamiquement vos choices dans les formulaires à partir d'un modèle ça devrait être possible également bien que techniquement plus compliqué.
Hors ligne
c est ce que j'ai fait avec la classe Physic
class Physic(models.Model):
lapropriete = models.CharField(_('lapropriete'), max_length=100)
description = models.TextField(_('description'), blank=True)
def __unicode__(self):
return self.lapropriete
class Meta:
verbose_name = _('physic')
verbose_name_plural = _('physics')
ordering = ['lapropriete']
en definissant un des champs par
choix = models.ForeignKey(Physic, verbose_name=_('properties'), null=True, blank=True, related_name='UniteProperty2_choix')
oui le probleme est qu'on perd le titre de la categorie et ca oblige a melanger toutes les proprietes (mecanique, thermique, optique, etc...)
mais c'est peut etre mieux que tout soit parametrable depuis l'admin
merci de votre reponse
Hors ligne