2017-12-15 16 views
0

RetrieveAPIViewの後のクエリロジックはどこで作成できますか? views.pyでRetrieveAPIViewの後のクエリロジックはどこで記述できますか?

class Message(models.Model): 
    """ 
    message 
    """ 
    message_num = models.CharField(default=getMessageNum, max_length=16) 

    title = models.CharField(max_length=64) 
    content = models.CharField(max_length=1024) 

    is_read = models.DateTimeField(null=True, blank=True) 

    create_user = models.ForeignKey(User, related_name="created_messages") 
    receive_user = models.ManyToManyField(User, related_name="received_messages") 

    ctime = models.DateTimeField(auto_now_add=True) 
    uptime = models.DateTimeField(auto_now=True) 

    def __str__(self): 
     return self.title 

# the message list 
class UserMessageListAPIView(ListAPIView): 
    serializer_class = UserMessageSerializer 
    permission_classes = [] 

    def get_queryset(self): 
     user = self.request.user 
     messages = user.received_messages.all() 

     return messages 

# the message detail 
class UserMessageRetrieveAPIView(RetrieveAPIView): 
    serializer_class = UserMessageSerializer 
    permission_classes = [] 

    def get_queryset(self): 
     user = self.request.user 
     messages = user.received_messages.all() 

     return messages 

あなたが見る、私はメッセージのインスタンスを取得することができますUserMessageRetrieveAPIViewに私のmodels.pyで

私はMessageクラスを持っています。 メッセージのis_readを設定するロジックを実行するにはどうすればよいですか?私はそれをどこに置くことができますか?


その可能ならば、私は意味EDIT

は、私はそれを更新し、検索されたメッセージを取得したいが、私はそれを取得する方法がわかりません。

+0

mmm .....すべての 'message_num'で' return messages'の直前にdb updateを呼び出さないのはなぜですか? – NoobEditor

+0

IDはどのように取得できますか? – 1243916142

+0

これはコードの問題よりも設計上の議論です! :) 'user.received_messages'の目的は何ですか? – NoobEditor

答えて

0
class UserMessageRetrieveAPIView(RetrieveAPIView): 
    serializer_class = UserMessageSerializer 
    permission_classes = [] 

    def get_queryset(self): 
     user = self.request.user 
     messages = user.received_messages.all() 

     return messages 

    def retrieve(self, request, *args, **kwargs): 
     instance = self.get_object() 
     instance.is_read = true 
     instance.save() 
     serializer = self.get_serializer(instance) 
     return Response(serializer.data) 
関連する問題