4

私のdjangoアプリにはシンプルなPostモデルがあります:

class Post(models.Model):
    category = models.CharField(max_length=10, choices=choices)
    message = models.CharField(max_length=500)
    user = models.ForeignKey(User, editable=False)

匿名ユーザーがニックネームで投稿できる機能を実装したいと考えています。残念ながら、django では AnonymousUser のインスタンスを外部キーとして Post クラスに保存することはできません。

ユーザーなしのすべての投稿に使用される匿名ユーザー(id = 0、または可能であれば負の数)を表す「ダミー」ユーザーレコードをデータベースに追加することを考えていました。また、存在する場合は、null 許容の名前フィールドを使用して、匿名ユーザーのニックネームを表します。

この解決策は私には少しハックに思えます。よりクリーンで効率的なソリューションはありますか?

4

4 に答える 4

6

いくつかのセッション情報で新しいユーザーを識別できる場合は、通常のユーザー アカウントを、いわばプロ フォーマとして作成し、それらを揮発性として識別するためのフラグを付けることができます (これにより、定期的なメンテナンス クリーンアップが必要になる場合があります)。

セッションの有効期間中にユーザーが実際に登録したい場合は、ユーザー アカウントを再利用でき、ユーザーは自分のすべてのデータを保持できます。

@slacy がコメントし、@Dominique が回答したように。独自に作成する代わりに、既存のプロジェクトを見てみましょう。たとえば、次のようになります。

于 2011-01-03T13:09:11.367 に答える
1

テストされていませんが、これは役に立ちます: https ://github.com/danfairs/django-lazysignup

于 2011-01-03T13:56:24.293 に答える
0

ユーザーが匿名の場合、と を追加blank=Truenull=TrueUser ForeignKeyに設定できます。Noneニックネームをどこかに保存するだけです。

于 2011-01-03T13:08:15.600 に答える