我正在尝试建立社交网络并希望我的用户拥有3个隐私选项[privtae,public,friends_except],
private和public是布尔字段,friends_except是用户列表
如果无法将dict作为字段存储在模型中,那么我该怎么做才能实现我想要的。
答案 0 :(得分:1)
首先,如果您正在使用关系数据库,您可以创建一个包含所有这些属性的新模型,并将它们作为外键与主模型链接,或者将其非规范化以将所有fiels分别存储在基本模型中。如果您正在使用像MongoDB这样的nosql系统,那么您当然可以将其存储为字典或JSON字段。
其次,由于用户一次只能选择一个隐私选项,为什么要使用单独的模型甚至是字典类型构造。只需将其存储为CharField
,并指定选项。
PRIVACY_CHOICES = [('public', 'public'), ('private', 'private', ('custom', 'custom')]
privacy_choice = models.CharField(max_length=256, choices=PRIVACY_CHOICES)
friends_allowed = models.ManyToManyField('User', blank=True)
答案 1 :(得分:0)
看一下,而不是你的方法,我建议你创建一个模型,让我们说Friends_except,1个字段作为你的用户模型的外键。您可以将要阻止的所有用户发送到被阻止的用户表
(那就是Facebook上发生的事情)
然后在视图中,您可以轻松地进行简单的查询
if:
user.is_authentictaed and is not in users.friends_except.objects.all()
" display your post" else Nah.