我有一个WorderOrder
类,它有预定义的工单类型:
class WorkOrder( models.Model ) :
WORK_TYPE_CHOICES = (
( 'hc', 'Heating and cooling' ),
( 'el', 'Electrical' ),
( 'pl', 'Plumbing' ),
( 'ap', 'Appliances' ),
( 'pe', 'Pests' ),
( 'ex', 'Exterior' ),
( 'in', 'Interior' ),
( 'ot', 'Others' ),
)
work_type = models.CharField( max_length = 2, choices = WORK_TYPE_CHOICES )
vendor = models.ForeignKey( Vendor, null = True, blank = True )
因此,每个订单必须具有一个工单类型。不久后,供应商也可以分配到工作单。
我希望Vendor
类与WorkOrder
类中的相同的工单选择建立M2M关系。换句话说,每个供应商都能够执行一种或多种工作类型。例如,Bob的Plumbing只能做“Plumbing”,而Solid Home Repair可以做“电气”,“管道”,“外部”和“内部”。
我知道我可以创建另一个名为WorkType
的表并使用来自WorkOrder
的外键和来自Vendor
的M2M,但因为我觉得我不会改变工作类型的选择,我宁愿在models.py
预定义它们。
此外,如果我可以在models.py
中预定义它,那么我不必在部署和升级期间预先填充表WorkType
。
答案 0 :(得分:1)
为您提供的一些选择:
为work_type_choices创建模型,实例化记录(hc,el等),然后使用manytomany字段,或
创建一个字段并将CSV值保存(例如:“hc,el”),根据需要将值拆分/加入其元素,或
将上述字段和函数封装到自定义字段中并使用
利用其他人的代码段,例如: http://djangosnippets.org/snippets/1200/