Python Django基于现有属性值的默认模型属性?
我在Django有一个简单的数据模型,其中包含类Python Django基于现有属性值的默认模型属性?,python,django,Python,Django,我在Django有一个简单的数据模型,其中包含类Department和Role。(例如,为了安全起见。) 部门与角色具有一对多关系,并且角色类包含一个用于标识特定实例的ID。例如: > Department: Sales >> Role (1): Accounts >> Role (3): Closing > Department: Maintenance >> Role (2): IT >> Role (4): Equipment
Department
和Role
。(例如,为了安全起见。)
部门
与角色
具有一对多关系,并且角色
类包含一个用于标识特定实例的ID。例如:
> Department: Sales
>> Role (1): Accounts
>> Role (3): Closing
> Department: Maintenance
>> Role (2): IT
>> Role (4): Equipment
这样做的缺点是每个角色都使用自己的全局ID。因此,如果要创建大量销售角色,然后再创建一个额外的维护角色,那么新的维护角色的ID将非常大,并且看起来“不同步”
因此,我还想为每个角色创建一个部门特定的ID,如下所示:
class Role(models.Model):
department_id = models.IntegerField()
缺点是我找不到一种方法来:
1) 让现有角色将其现有id转移到新的部门id
字段,留下间隙,但防止出现未来间隙:
> Department: Sales
>> Role (1): Accounts
>> Role (3): Closing
>> Role (4): *New Sales Role*
> Department: Maintenance
>> Role (2): IT
>> Role (4): Equipment
>> Role (5): *New Maintenance Role*
2) 或者,动态地将默认值
分配给一个方法,该方法扫描表中每个部门的所有角色,并为其分配新ID:
> Department: Sales
>> Role (1): Accounts
>> Role (2): Closing
>> Role (3): *New Sales Role*
> Department: Maintenance
>> Role (1): IT
>> Role (2): Equipment
>> Role (3): *New Maintenance Role*
我正在使用South来处理模式迁移。您将需要三次迁移(采用方法二):