我正在使用Django multi-table inheritance实现一个通知系统。你知道吗
看起来是这样的:
class Notification(models.Model):
# this allows us to check the type without having to query another table
type = models.CharField(max_length=2, choices=type_choices)
user = models.ForeignKey(User, related_name='+', null=True)
date = models.DateTimeField(default=datetime.now)
read = models.BooleanField(default=False)
class Meta:
ordering = ["-date"]
# Users can comment on items.
class CommentNotification(Notification):
comment = models.ForeignKey(Comment, related_name='+')
class ShareNotification(Notification):
share = models.ForeignKey(Share, related_name='+')
# If user unsubscribes from an item, they will not receive notifications of comments on that item
class UnsubscribeItem(models.Model):
user = models.ForeignKey(User, related_name='+')
item = models.ForeignKey(Item, related_name='+')
class Comment(models.Model):
item = models.ForeignKey(Item, related_name='comments')
user = models.ForeignKey(User, related_name='+')
comment = models.TextField()
如果我想获得一个用户的所有通知,我可以简单地查询Notification
表。但是,如果用户取消订阅了任何CommentNotification
条目(仅当存在UnsubscribeItem
且user=request.user
和item=comment.item
的条目时),我还想排除这些条目。你知道吗
当然,问题是我要筛选的字段不在基类上。是否可以修改查询集本身以排除这些条目?或者在序列化集合时是否需要排除它们?(如果有帮助的话,我将使用django rest框架为我的API序列化。)
目前没有回答
相关问题 更多 >
编程相关推荐