0
class Snippet(models.Model):
    language = models.CharField(max_length=25)
    content = models.TextField(max_length=500)
    description = models.CharField(max_length=200)
    PRIVACY_CHOICES = (
        ('Me', 'Me'),
        ('Friends', 'Friends'),
        ('Everyone', 'Everyone'),
    )
    privacy = models.CharField(max_length=8,choices=PRIVACY_CHOICES,default='Everyone')

class SiteUser(models.Model):
    user = models.OneToOneField(User)
    snippets = models.ManyToManyField('Snippet', null=True, blank=True)
    friends = models.ManyToManyField(User, related_name='friends')

我正在尝试检查当前用户是否是他正在查看其页面的人的朋友。然后,根据他们是否是朋友,我只需要显示具有正确隐私级别的片段。

因此,如果他们是朋友,则只有隐私 = 'Everyone' 或 'Friends' 的片段,如果是陌生人,则只有隐私 = 'Everyone' 的片段,等等。

我能够轻松找出所需的隐私级别,但我很难对片段进行正确过滤。

这是我检查他们是否是朋友的方法:

user.siteuser.friends.get(username=request.user.username)

这是我尝试按隐私级别过滤片段的方式:

saved_snippets = user.siteuser.snippets.filter(privacy='Everyone')

由于某种原因,过滤根本不起作用,我不明白,因为通常我只是这样做:

saved_snippets = user.siteuser.snippets.all()

它正确地获取了该用户的片段,所以我不确定为什么all()有效,但不是filter().

4

0 回答 0