3

私はこの状況に何度か遭遇しました。

contrib で一般的に気に入っているものがあるが、フィールドを微調整したい場合、どうすればよいですか?

赤ちゃんをお風呂のお湯と一緒に捨てたくない。

例を挙げると、auth.user を取り上げます (この問題に関する一般的な意見とは反対に、私は一般的に正しい方向に進んでいると考えています)。auth.user と auth.group の関係のスルー モデルを作成したいと考えています。

djangoを変更せずにこれを行うにはどうすればよいですか?

4

1 に答える 1

0

auth.UserUser モデルは Django の多くの部分に結び付けられており、これを変更するのは難しいため (他の人が指摘しているように不可能ではありませんが)、特別なケースです。私の最善のアドバイスは、なぜ Django のソースを変更したくないのかということです。devel ブランチのヘッドのソースをプルするか、番号付きリリースに対応するタグ付きバージョンを取得できます。自由にコードを変更し、svn updatesvn diff、およびの組み合わせを使用svn patchして変更を移行します。

次に、Python は解釈され、動的に型付けされるため、コード内で contrib モジュールを変更できます。これを行う場合、一部の操作で元のモジュールが既に使用されている可能性があるため、解析/処理の順序を考慮する必要があります。User以下は、関連付けられたProfileオブジェクトへの便利な前方参照を追加する方法について、他の誰か (おそらくここ SO) から得た例です。

from django.db.models import Model
from django.contrib.auth.models import User

class UserProfile(Model):
    user = ForeignKey(User, unique=True)
    phone = CharField(verbose_name="phone number", blank=False, max_length='20')

User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])

ModelFieldsただし、この戦略は での追加/変更には機能しないと思いますdjango.contrib.auth.models.User

最後に、グループをユーザーに関連付ける特定の例については、 UserProfile モデルを作成することでこれが可能かどうかを確認する必要があります。私の最初の推測では、それはかなり簡単なはずです。

于 2011-03-16T03:34:11.390 に答える