2

プロファイルベースプロジェクトでインストールされたpinax.apps.accountsとidiosプロファイルアプリの違いは何ですか?

私が理解しているように、contrib.authは認証目的(つまり、ユーザー名とパスワード)のためだけのものであり、認証モデルでのUser.namesとUser.emailの存在は歴史的であり、これらのフィールドは使用しないでください。しかし、アカウントとプロファイルの区別は私には失われています。pinax.apps.accountとidiosがあるのはなぜですか?

4

2 に答える 2

3

Pinax アカウントは、ユーザー、タイムゾーン、および言語を保持する単なるラッパーです。user は、標準の django.auth User モデルへの外部キー関係です。

class Account(models.Model):
    user = models.ForeignKey(User, unique=True, verbose_name=_('user'))
    timezone = TimeZoneField(_('timezone'))
    language = models.CharField(_('language'), max_length=10, choices=settings.LANGUAGES, default=settings.LANGUAGE_CODE)

    def __unicode__(self):
        return self.user.username

idios Profile モデルは基本的に同じことを行いますが、いくつかのカスタム メソッドがあります。

class ProfileBase(models.Model):
    # @@@ could be unique=True if subclasses don't inherit a concrete base class
    # @@@ need to look at this more
    user = models.ForeignKey(User, verbose_name=_("user"))

    class Meta:
        verbose_name = _("profile")
        verbose_name_plural = _("profiles")
        abstract = True

    def __unicode__(self):
        return self.user.username

    def get_absolute_url(self):
        if idios.settings.MULTIPLE_PROFILES:
            # @@@ using PK here is kind of ugly. the alternative is to
            # generate a unique slug for each profile, which is tricky
            kwargs = {
                "profile_slug": self.profile_slug,
                "pk": self.pk
            }
        else:
            if idios.settings.USE_USERNAME:
                kwargs = {"username": self.user.username}
            else:
                kwargs = {"pk": self.pk}
        return reverse("profile_detail", kwargs=kwargs)

    @classmethod
    def get_form(cls):
        return get_profile_form(cls)

    def _default_profile_slug(cls):
        return cls._meta.module_name

    profile_slug = ClassProperty(classmethod(_default_profile_slug))

あなたが求めているのであれば、どちらも django.auth.User の認証機能を複製しません。どちらにも依存関係があるようには見えません。したがって、両方の適切な使用方法が見つからない場合は、理にかなった方を使用してください。

于 2012-07-30T22:14:32.410 に答える
1

プロファイルは、公開データ、または他の人と共有するデータに使用することを意図しており、本質的により説明的です。

アカウント データは、特定の動作 (言語またはタイムゾーンの設定) を駆動するアカウントの設定に似ています。これは、あなたにプライベートであり、サイト (または他のアプリ) のさまざまな側面がどのように機能するかを制御します。

于 2013-01-05T15:32:04.673 に答える