у меня 3 модели. Одна модель - это модель User, другая - модель Post, а другая - модель уведомлений. Я хочу использовать инфраструктуру REST Django, чтобы показать все уведомления для вошедшего в систему пользователя, а также для каждого пользователя, который взаимодействовал с вошедшим в систему пользователем.
class Notification(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='actors')
actor = models.ForeignKey(User, on_delete=models.CASCADE, related_name='users')
post = models.ForeignKey(Post, on_delete=models.CASCADE, blank=True, null=True)
type = models.ForeignKey(NotifType, on_delete=models.CASCADE)
is_read = models.BooleanField()
created_at = models.DateTimeField(auto_now_add=True)
class Post(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
status = models.CharField(max_length=200)
share_count = models.IntegerField(default=0)
created_at = models.DateTimeField(auto_now_add=True)
url = models.CharField(max_length=150)
serializers.py
class NotificationSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
views.py
class GetNotifications(ListAPIView):
serializer_class = NotificationSerializer
def get_queryset(self):
user = get_object_or_404(User, id=self.request.user.id)
return User.objects.select_related().filter(users__user=user).order_by("-users__created_at")
То, что у меня есть в настоящее время, возвращает всех пользователей, которые взаимодействовали с зарегистрированным пользователем. Однако, это не возвращает детали об уведомлении. Я хочу, чтобы все детали о каждом уведомлении, в том числе о посте. Таким образом, вывод должен быть примерно таким:
{
"post": {
"id": 1,
"status": "Hello!",
.
.
.
},
"user": {
"username": "Ben",
"avatar": "example.png"
.
.
},
is_read: 1,
created_at: 2017-07-21,
type: 2
}