过滤添加到Django中的用户模型的自定义字段

时间:2013-08-09 22:37:26

标签: django django-models django-views django-users

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()

0 个答案:

没有答案