3

組み込みのユーザー モデルを使用する django プロジェクトがあります。

ユーザーに関係を追加する必要があります。今のところ、ユーザーが好きな記事の「いいね」関係と、他のユーザーがフォローしている「フォロー中」の関係です。

これらの関係を定義する最良の方法は何ですか? django doc は、ユーザーにフィールドを追加するために、ユーザーと 1 対 1 の関係を持つ Profile モデルを作成することを推奨しています。しかし、私の場合、ユーザープロファイルに追加のフィールドが追加されないことを考えると、これはやり過ぎです。

助言がありますか?

4

4 に答える 4

6

これらの特別な多対多の関係については、モデルで定義する必要があります。

class UserFollowing(models.Model):
    user = models.ForeignKey(User, related_name='following')
    following = models.ForeignKey(User, related_name='followed_by')

したがって、ユーザーがいる場合は、次のようなことができます。

user = User.objects.get(...)
user.following.all() # all users this user is following
user.followed_by.all() # all users who follow this user

記事に関しては、同様のスキーマをセットアップしました。

class ArticleLike(models.Model):
    article = models.ForeignKey(Article, related_name='likes')
    like = models.ForeignKey(User, related_name='articles_like')

Article.objects.get(...).likes.all()

User.objects.get(...).articles_like.all()
于 2012-10-23T15:42:33.677 に答える
1

これにはDjango Relationshipsアプリを使用してみてください。関係を作成するためのものでauth.usersあり、そのコードを学習することで、自己参照フォローを作成する方法を理解できます。その後、より一般的な型に拡張したり、Django コンテンツ タイプ フレームワークを使用して独自の型を作成したりできます。

ただし、Django ORM は本質的にグラフ データベースとして正確に定義されているわけではないため、リレーショナル データベースの概念に固執し、必要に応じてManyToManyリレーションシップを使用するようにしてくださいForeignKey

于 2012-10-23T19:27:39.170 に答える