我是Django的新手,我試圖模擬類似於: 「Field」:[{「opt1」:val1,「opt2」:val2},{「opt1」:val1, 「OPT2」:VAL2}]。在Django中的模型陣列
class Test(models.Model):
Name = models.TextField(required=True)
Specialty = models.????
我該寫什麼? P.S.我使用的MongoDB數據庫和PyMongo
我是Django的新手,我試圖模擬類似於: 「Field」:[{「opt1」:val1,「opt2」:val2},{「opt1」:val1, 「OPT2」:VAL2}]。在Django中的模型陣列
class Test(models.Model):
Name = models.TextField(required=True)
Specialty = models.????
我該寫什麼? P.S.我使用的MongoDB數據庫和PyMongo
首先使用
pip install jsonfield
安裝jsonfield然後
from jsonfield import JSONField
data = JSONField(blank=True, null=True)
我試圖像模式: 「現場」:[{ 「opt1」:val1,「opt2」:val2},{「opt1」:val1,「opt2」:val2}]。
Django模型是關係數據庫的封裝。關係數據庫沒有多值字段,他們使用關係代替 - 在這種情況下是一對多的關係。 IOW,則需要另一種模式爲你的選擇有一個ForeignKey你的模型,即:
class Test(models.Model):
name = models.TextField(required=True)
class Option(models.Model):
test = models.ForeignKey(Test, related_name="options")
opt1 = models.CharField(...)
opt2 = models.CharField(...)
然後你就可以訪問你的選擇直通test.options.XXX
,即:
t = Test.objects.create(name="test")
# list existing options
print t.options.all()
# add an option
t.options.create(opt1="foo", opt2="bar")
可以也使用一些可用的JSONField
實現的,但你會失去在路上不少東西(在OP查詢tions值 - 除非使用PostgreSQL - 數據庫和模型級別的限制等,automagic管理和模型形式等)。
以哪種方式我可以定義「opt1」,「opt2」等等。如果您提供一些關於如何做的細節,應該更好,因爲我對django知之甚少,而且我無法找到django + mongodb – CiroRa
爲什麼使用jsonfield? –
我沒有補充說我在使用Mongo。所以這些答案與目前的問題 – CiroRa