2014-04-20 5 views
0

Essentiellement, je crée une application où les utilisateurs peuvent avoir plusieurs compétences. Donc, je l'ai configuration comme ceci:Quelle est la meilleure façon de créer des objets dans Django au démarrage du serveur?

class Skill(models.Model): 
    name = models.CharField(max_length=30) 

class Listing(models.Model): 
    ...(other stuff for the model here) 
    skill = models.ManyToManyField(Skill,) 

Et puis je vais créer une forme qui ressemble à ceci:

class ListingForm(ModelForm): 
    skill = forms.ModelMultipleChoiceField(queryset=Skill.objects.all()) 
    class Meta: 
    model = Listing 

Le résultat final étant que je veux chaque compétence de se présenter comme une case à cocher dans le formulaire. Il pourrait donc y avoir 30 compétences parmi lesquelles choisir, et l'utilisateur pourrait alors cocher n'importe lequel d'entre eux. Le problème auquel je suis confronté est que je dois d'une manière ou d'une autre créer ces 30 objets de compétences au départ. Je sais comment créer des objets, mais je ne sais pas où placer le code pour que les compétences ~ 30 ne soient créées que la première fois que le serveur démarre. Où dois-je créer les objets de compétences initiaux? Y a-t-il une meilleure manière de faire cela?

+0

N'avez-vous pas une base de données que vous pouvez Mettez vos compétences dans? Sûrement le chemin à suivre serait de stocker vos compétences dans une table et de les interroger à partir de là. –

+0

Il existe une base de données, mais je préférerais utiliser Python/Django pour cela car je n'ai pas beaucoup d'expérience avec SQL et je supprime souvent la base de données car je suis encore en train de développer l'application et de changer constamment les modèles. – reparadocs

+0

Vous devriez utiliser une base de données et South http://south.aeracode.org/ pour traiter des modèles "en constante évolution". Ou utilisez Django 1.7! – danielcorreia

Répondre

0

Vous pouvez créer un fichier fixtures.json et utiliser loaddata:

fixtures.json

[ 
    { 
     "pk": 1, 
     "model": "appname.skill", 
     "fields": { 
      "name": "skill name", 
     } 
    } 
} 

ligne cmd:

python manage.py loaddata path/to/fixtures.json 

Voici quelques docs pour elle: Providing initial data

+0

Merci! Ceci est exactement ce que je cherchais :) – reparadocs

Questions connexes