簡體   English   中英

如何在Django模型中將字典存儲為字段?

[英]how to store a dictionary in django model as a field?

我正在嘗試建立一個社交網絡,希望我的用戶擁有3個隱私選項[privtae,public,friends_except],

私人和公共是布爾字段,並且friends_except是用戶列表

如果不可能將dict作為字段存儲在模型中,那么我該怎么做才能實現我想要的。

首先,如果您使用的是關系數據庫,則可以創建一個包含所有這些屬性的新模型,並將它們作為與主模型的外鍵鏈接,也可以對其進行反規范化以將所有文件分別存儲在基本模型中。 如果您使用的是像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)

看起來,而不是您的方法,我建議您創建一個模型,比如說Friends_except,其中1字段是用戶模型的外鍵。 您將能夠將要阻止的所有用戶發送到被阻止的用戶表

(那是在Facebook上發生的事情)

然后在視圖中,您可以輕松進行簡單的查詢

if:
    user.is_authentictaed and is not in users.friends_except.objects.all()

    " display your post" else Nah.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM