私は非常に興味深い状況に陥っています。
デフォルトの django の Group モデルをいくつかのフィールドで拡張する必要があります。たとえば、グループモデルから継承していくつかの参照を変更するなど、最初に継承を使用しようとしましたが、必要なすべての参照を変更できないようです。そのため、この方法ではdjangoパーミッションシステムが完全に壊れます。
次に、この回答を見つけました: Django Group モデルを拡張するにはどうすればよいですか? 男が方法を使用することを提案した場所field.contribute_to_class()
。
この調整は、< myapp > のモデル定義のすぐ上に配置しました。(なぜグループの役割が必要なのか聞かないでください。それは私の考えではありません。必要なだけです:D)
if not hasattr(Group, 'roles'):
field = models.ManyToManyField(
Role, verbose_name=_('roles'), blank=True,
help_text=_('List of roles attached to this group'),
related_name='groups')
field.contribute_to_class(Group, 'roles')
class MyGroup(Group):
class Meta:
proxy = True
def _sync_permissions(self):
"""
This method will sync group permissions with all attached Roles.
"""
self.permissions.clear()
for role in self.roles.all():
self.permissions.add(role.permissions)
self.save()
この部分は機能しているようです (実際には django.contrib.auth.models.Group モデルを変更します)
しかし、次に必要なのは、グループ モデルの移行を生成することです。単純に実行する./manage.py makemigrations <myapp>
と、グループ モデルの移行が生成されますが、それを django.contrib.auth アプリケーション内に配置しようとします。これは間違いなく必要なものではありません。
だから、ここでの私の質問は次のとおりです。
グループモデルの移行を生成するようにdjangoに指示する方法はありますが、python libsディレクトリの下に移行ファイルを作成するのではなく、< myapp >内に作成するか、移行コードを出力するだけですか?