在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 个回答
2
你可以创建一个叫做 fixtures.json 的文件,然后使用 loaddata 命令来加载数据。
fixtures.json
[
{
"pk": 1,
"model": "appname.skill",
"fields": {
"name": "skill name",
}
}
}
命令行输入:
python manage.py loaddata path/to/fixtures.json
这里有一些相关的文档: 提供初始数据