2013-08-15 1 views
0

Supposons que j'ai un modèle avec choix, voir ci-dessous (ceci est l'exemple django doc). Ce dont j'ai besoin, c'est que mon application web puisse ajouter et supprimer dynamiquement des choix et j'ai besoin que mon modèle soit mis à jour avec ces choix. En fait, le meilleur moyen serait d'avoir des choix stockés dans une base de données séparée et le modèle d'avoir une relation avec eux via ForeignKey. Comment puis-je modifier le code pour avoir toujours des choix sélectionnables dans le modèle? Merci.Choix de modèle dynamique Django modifiable dans l'application web

from django.db import models 

class Student(models.Model): 

    YEAR_IN_SCHOOL_CHOICES = [ 
     ('FR', 'Freshman'), 
     ('SO', 'Sophomore'), 
     ('JR', 'Junior'), 
     ('SR', 'Senior'), 
    ] 
    year_in_school = models.CharField(max_length=2, 
            choices=YEAR_IN_SCHOOL_CHOICES, 
            default=FRESHMAN) 

Répondre

1

Tuple is an Immutable object, et vous ne pouvoir ajouter/supprimer. Pour atteindre ce que vous recherchez, vous avez besoin d'un stockage persistant. En d'autres termes, il doit être stocké/extrait de la base de données.

Ce que je recommande est, ce qui en fait un champ ForeignKey et charger les choix existants en tant que initial fixture dans la base de données.

from django.db import models 

class Student(models.Model): 
    year_in_school = models.ForeignKey('YearChoices', default= get_default_year()) 

class YearChoices(models.Model): 
    year_in_school = models.CharField(max_length=20) 

Une façon je peux penser à sa mise en œuvre serait, sous la forme, ont une table CharField with autocomplete choices de YearChoices, et POST, si le choix ne pas existe, créez une nouvelle entrée dans la table YearChoices .

+0

Merci. En fait, l'utilisateur ne modifierait les choix qu'indirectement à travers une vue différente, donc je n'ai pas vraiment besoin de la fonctionnalité "autocomplete". La question est: comment rendre ces ForeignKeys dans le formulaire. Disons que j'ai un ModelForm qui crée une forme à partir du modèle de Student ci-dessus. Comment puis-je spécifier les choix ForeignKey avec un widget dans ce ModelForm? – jazzblue

+0

c'est assez simple. ForeignKeys affiche par défaut un widget de choix. – karthikr

Questions connexes