Django には、クラスDepartment
とRole
. (例:日本酒)
は と 1対多Department
の関係Role
にあり、Role
クラスには特定のインスタンスを識別するために使用される ID が含まれています。例えば:
> Department: Sales
>> Role (1): Accounts
>> Role (3): Closing
> Department: Maintenance
>> Role (2): IT
>> Role (4): Equipment
これの欠点は、各ロールが独自のグローバルID を使用していることです。そのため、多数の Sales ロールを作成してから追加の Maintenance ロールを作成すると、その新しい Maintenance ロールの ID が非常に大きくなり、「非同期」に見えます。
したがって、次のように、役割ごとに部門固有の ID も作成したいと思います。
class Role(models.Model):
department_id = models.IntegerField()
欠点は、次のいずれかの方法が見つからないことです。
1) 既存のロールに既存の ID を新しいdepartment_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*
default
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 を使用しています。