在服务器启动时在Django中创建对象的最佳方法是什么?

时间:2014-04-20 22:11:58

标签: python django

基本上,我正在创建一个用户可以拥有多种技能的应用程序。所以我设置如下:

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

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

然后我将创建一个看起来像这样的表单:

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

最终结果是我希望每个技能都显示为表单中的复选框。所以可能有30种技能可供选择,然后用户可以检查他们中的任何一个他们是否精通。我面临的问题是我最初必须创建这30个技能对象。我知道如何创建对象,但我不知道在哪里放置代码,以便在服务器第一次启动时才能创建~30技能。我应该在哪里创建初始技能对象?有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以创建fixtures.json文件并使用loaddata:

<强> fixtures.json

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

cmd行:

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

以下是一些文档:Providing initial data