最初は Group モデルのみを拡張しました。余分なフィールドは正しく機能していましたが、auth-user モデルに戻すと一貫性のない結果が得られました。
group1 = MyGroup(..)
user = group1.user_set.all()[0]
group2 = user.groups.all()[0]
group1 == group2 #(False!)
type(group1) #MyGroup..
type(group2) #Group..
次に考えたのは、auth.User モデルと auth.Group モデルの両方を拡張することでした。
構造例:
from django.contrib.auth.models import User As DjangoUser
from django.contrib.auth.models import Group As DjangoGroup
class MyGroup(DjangoGroup):
extra1 = models.CharField(..)
class MyUser(DjangoUser):
extra1 = models.CharField(..)
これは可能ですか?ここで修正されたというバグレポートを見ました。ただし、これを実現する正しい方法の例は見当たりませんでした。また、この部分がバグ修正後に必要かどうかも明確ではありませんでした。
manager = UserManager()
class MyUser(DjangoUser):
signature = forms.CharField()
post_count = forms.IntegerField()
objects = manager
_default_manager = manager
この種の行動のアイデア/例はありますか? ユーザー モデルで「グループ」リンクを再定義しようとしましたが、検証エラーが発生しました。理想的には、上記の例を実行して、group1 == group2 および type(group2) == type(MyGroup()) を実行できるようにしたいと考えています。