User モデルを継承した方が効率的で効果的ですか? 理由はわかりませんが、あなたの主張を読みたいです。IMNSHO、モデルの継承は常に苦痛でした。
それでも、これはあなたの質問に答えないかもしれませんが、このスニペットで Will Hardy によって提案された解決策には非常に満足しています。シグナルを利用して、新しいユーザーごとに新しいユーザー プロファイルを自動的に作成します。
リンクが消えることはまずありませんが、彼のコードの私のわずかに異なるバージョンは次のとおりです。
from django.contrib.auth.models import User
from django.db import models
from django.db.models.signals import post_save
from django.utils.translation import ugettext_lazy as _
class AuthUserProfileModelBase(models.base.ModelBase):
# _prepare is not part of the public API and may change
def _prepare(self):
super(AuthUserProfileModelBase, self)._prepare()
def on_save(sender, instance, created, **kwargs):
if created:
self.objects.create(user=instance)
# Automatically link profile when a new user is created
post_save.connect(on_save, sender=User, weak=False)
# Every profile model must inherit this class
class AuthUserProfileModel(models.Model):
class Meta:
abstract = True
__metaclass__ = AuthUserProfileModelBase
user = models.OneToOneField(User, db_column='auth_user_id',
primary_key=True, parent_link=True)
# The actual profile model
class Profile(AuthUserProfileModel):
class Meta:
app_label = 'some_app_label'
db_table = 'auth_user_profile'
managed = True
language = models.CharField(_('language'), max_length=5, default='en')
もちろん、功績はすべてウィル・ハーディにあります。