2016-05-16 13 views
1

私は、 "ユーザ"のためにManyToManyFieldを持つ "メッセージ"モデルを持っています。 管理サイトでは、複数のユーザーにメッセージを追加できます。 user_idに従ってメッセージをフィルタリングできるビューを作成しようとしています。データベースの新しいテーブルがこののManyToManyFieldのために作成されているので、どのように私は私のような何かをしたいと同じManyToManyFieldを持つdjangoモデルのクエリーセットをフィルタリングする方法は?

class Messages(models.Model): 
id = models.AutoField(primary_key=True) 
message = models.CharField('Message',max_length=1000) 
user = models.ManyToManyField('user',blank=True,null=True) 
... 

を達成することができます

def sendMessage(userId) 
    messageObj = Messages.objets.filter(user_id=userId) 

は誰も私を助けて、どのように私ができるを伝えることができます特定のユーザのメッセージをフィルタリングする? ありがとうございます。

答えて

0

特定のユーザーのメッセージをフィルタリングするには、コードが正しく表示されているだけです(入力ミスがあります)。あなたがuserIDを使用したい場合(私は個人的に、user_idように名前を変更します)

queryset = Messages.objects.filter(user=user) 

:それはこのようなものでなければなりません

queryset = Messages.objects.filter(user.id=user_id) 

これらのいずれもが、あなたにquerysetを与える、どの構造体のような配列です。より細かい値が必要な場合は、引き続きフィルタリングすることができます。例:

queryset.filter(message="this is my message").first() # this will now give you a single element 
+0

感謝:) でクエリセットを返しuser.messagesを行うことができますそれは働いた。 –

0

この関係をrelated_nameに設定します。

class Messages(models.Model): 
... 
user = models.ManyToManyField('user',blank=True,null=True, related_name='messages') 
... 

その後、あなたは単に私が `クエリセット= Messages.objects.filter(user__id = USER_ID)` をしたブロは@djqユーザーのメッセージ

関連する問題