如何在django模型中存储字典作为字段?

时间:2017-09-27 14:56:35

标签: python django dictionary

我正在尝试建立社交网络并希望我的用户拥有3个隐私选项[privtae,public,friends_except],

private和public是布尔字段,friends_except是用户列表

如果无法将dict作为字段存储在模型中,那么我该怎么做才能实现我想要的。

2 个答案:

答案 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.