您可以添加一个模型并通过夹具Category
填充初始值。当用户输入一个不存在的类别时,您将创建一个新对象。meal
personal
编辑:
基本上,您创建两个模型而不是一个模型,Job
并且Category
, 而Job
有一个ForeignKey
to Category
:
class Category(models.Model):
name = models.CharField(max_length=50)
class Job(models.Model):
category= models.ForeignKey(Category)
您不必自己创建任何表,syncdb 将在下次运行时处理它。
然后你创建一个fixture并把它放到fixtures
你的应用程序的目录中。这将确保这两个条目始终存在:
[
{
"model": "myapp.category",
"pk": 1,
"fields": {
"name": "meal"
}
},
{
"model": "myapp.category",
"pk": 2,
"fields": {
"name": "personal"
}
}
]
请注意,您还可以在创建类别模型时通过类别模型的管理员输入这些条目。然后,您可以使用 dumpdata 来转储数据,因此您不必手动编写。
当然必须编写创建新类别实例的视图/表单逻辑。表格应该是非常标准的,一个ModelForm
模型Job
,加上一个输入新类别的附加字段应该可以完成这项工作。因此,您唯一需要考虑的是创建新条目的验证。表单将自动选择新条目,因为 a 默认ModelChoiceField
包含所有条目。