0

これは私のコードです:

class Question(models.Model):
    title = models.CharField(max_length=255, verbose_name='title', unique=True)
    content = models.TextField(verbose_name='content')
    author = models.ForeignKey(settings.AUTH_USER_MODEL)
    favourite_users = models.ManyToManyField(settings.AUTH_USER_MODEL,
                                             blank=True, null=True)

このモデルには、settings.AUTH_USER_MODEL への ForeignKey と ManyToManyField があります。「user」という名前の settings.AUTH_USER_MODEL インスタンスがある場合、このユーザーが書いた質問とこのユーザーが好きな質問を取得するにはどうすればよいですか? 「user.question_set.all()」を試しましたが、うまくいきません。次のように related_name を設定する必要があるかもしれません。

author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='questions')
favourite_users = models.ManyToManyField(settings.AUTH_USER_MODEL,
                                         related_name='favourite_questions',
                                         blank=True, null=True)

user.questions.all() および user.favourite_questions.all() を使用して、ユーザーが尋ねた質問とお気に入りに追加した質問を取得します。しかし、それが本当かどうかはわかりません。この問題を解決する良い方法があれば知りたいです。

4

2 に答える 2

1

試してみ'user.question_set.all()'ましたが、うまくいきません

カスタム認証モデルを使用get_user_model()しているため、認証フレームワークが使用しているモデルを取得するために使用する必要があります。

from django.contrib.auth import get_user_model

user_model = get_user_model()

特定のユーザーの質問を取得するには:

user_model = get_user_model()
user = user_model.objects.get(pk=1)  # Now this is not the "normal" User

user_questions = Question.objects.filter(author=user)
user_favorites = Question.objects.filter(favorite_users=user)
于 2013-08-25T04:32:43.823 に答える
0

特定のユーザーからのすべての質問を取得するには、 を使用しますQuestion.objects.filter(author=user)。同様に、特定のユーザーがお気に入りにしたすべての質問を取得するには、 を使用しますQuestion.objects.filter(favourite_users=user)

ドキュメントには、多対多のリレーションシップにわたる検索の非常に役立つ例がいくつか含まれています。

于 2013-08-25T03:59:30.990 に答える