2010-11-27 10 views
13

मैं एक Django डेटा मॉडल बना रहा हूं और मैं चरों में से किसी एक में तारों की एक सरणी स्टोर करने में सक्षम होना चाहता हूं; मैं उसे कैसे कर सकता हूँ?मैं Django मॉडल में तारों की सरणी कैसे संग्रहीत कर सकता हूं?

उदा

class myClass(models.Model): 
    title = models.CharField(max_length=50) 
    stringArr = models.??? 

सहायता के लिए धन्यवाद।

उत्तर

7

एक वैकल्पिक मॉडल के साथ स्ट्रिंग रखने वाला एक और मॉडल बनाएं, इसे ForeignKey पर myClass पर दें, और वहां अपनी सरणी स्टोर करें।

+7

कि बल्कि अक्षम नहीं है? – Andrew

+0

यदि आपको कभी परवाह नहीं है कि तार क्या हैं, तो सुनिश्चित करें। जैसे ही आप परवाह करते हैं, आप अधिक संरचना चाहते हैं। –

9

आप जेएसओएन जैसे कुछ क्रमिकरण तंत्र का उपयोग कर सकते हैं।

http://djangosnippets.org/snippets/1478/ (पिछले टिप्पणी में कोड पर एक नज़र डालें) इस तरह के क्षेत्र के साथ आप मूल सूची में तार डाल दिया और उन्हें प्रदान कर सकते हैं: वहाँ क्षेत्र परिभाषा के साथ एक टुकड़ा है कि आप करने के लिए कुछ काम का हो सकता है ऐसे क्षेत्र में। क्षेत्र अमूर्त शेष करेंगे। पढ़ने के साथ ही।

+0

मैं अक्सर जेएसओएन क्रमबद्ध डेटा का उपयोग करता हूं: जागरूक रहें हालांकि यह एक एसक्यूएल एंटीपाटरर्न http://www.pragprog.com/titles/bksqla/sql-antipatterns है, हालांकि कुछ वैध उपयोग हैं। –

4

आप cPickle उपयोग कर सकते हैं ...

class myClass(models.Model): 
    title = models.CharField(max_length=50) 
    stringArr = models.TextField() 

from cPickle import loads, dumps 
data = [ { 'a':'A', 'b':2, 'c':3.0 } ] 
obj = Myclass.objects.get(pk=???) 
# pickle data into a string-like format 
obj.stringArr = dumps(data) 
obj.save() 
# restore original data 
data = loads(obj.stringArr) 
+1

आप इसे एक पिकलेफ़ील्ड में भी सामान्यीकृत कर सकते हैं, या pypi पर एक का उपयोग कर सकते हैं: http://pypi.python.org/pypi/django-picklefield/ –

संबंधित मुद्दे