2009-07-24 2 views
1

저는 python/django를 처음 사용합니다. 장고 모델에 임의의 수의 필드를 저장해야합니다. 나는 장고가 이것을 처리하는 것을 가지고 있는지 궁금해.장고 모델에 임의의 수의 필드를 저장하는 방법은 무엇입니까?

일반적으로이 작업을 수행하려면 일부 XML을 열에 저장해야합니다. 장고는 XML이든 다른 (더 나은) 메소드이든 상관없이 이것을 쉽게 할 수있는 클래스를 제공합니까?

덕분에, 피트

+0

미래에는 장고에서 사용할 NoSQL 어댑터를 선택할 수 있다는 점도 유의할 가치가 있습니다. Google은 appengine에 BigTable 지원을 추가했으며 CouchDB 어댑터에서 초기 작업이 이루어졌습니다. – sixthgear

답변

11

는이 문제를 해결하는 방법이 많이 있습니다, 그리고 상황에 따라 그 중 하나가 작동하지 않을 수 있습니다. TextField를 사용하여 XML 또는 JSON 또는 다른 텍스트 형식을 저장할 수 있습니다. 파이썬의 피클 기능과 결합하여 좀 더 깔끔한 것을 할 수 있습니다.

당신은 DjangoSnippets에 장고 피클 필드 정의를 볼 수 있습니다 http://www.djangosnippets.org/snippets/513/

당신은 필드에 파이썬 사전을 덤프 할 수 있으며 당신이 그 필드를 참조 할 때 사전에 쉽게 접근 할 수 있도록 몇 가지 조작을 수행 XML 또는 기타 사항을 다시 구문 분석 할 필요가 없습니다.

다른 직렬화 형식에 대해 비슷한 작업을 수행 할 수있는 사용자 정의 필드 정의를 작성하는 방법을 모색 할 수있을 것이라고 생각합니다.

또는 단순히 모델을 리팩터링하여 ManyToMany 필드를 활용할 수 있습니다. 제네릭 키, 값 쌍에 대한 모델을 생성 한 다음 기본 모델에서 해당 제네릭 키, 값 모델에 대한 M2M 참조를 갖습니다. 등의 데이터를 참조 할 장고 ORM을 더 활용할 수있는 방법,

+0

많은 옵션을 제시하는 매우 좋은 답변입니다. 감사합니다! – slypete

+0

+1 나는 긴 대답을 타이핑하면서, 당신이 더 잘 명확하게 말한 것을 깨달은 다음, 대답을 삭제했다. – sixthgear

+0

이것은 내가 매우 유용하다는 것을 몰랐던 것을 가르쳐 주었다! –

0

에서이 사용할 수있는 XML 필드입니다 : http://docs.djangoproject.com/en/dev/ref/models/fields/#xmlfield

그러나 결과 쿼리에 대한 추가 분석을 수행 할 강제 것이다. (어느 정도 생각해야 할 것 같아요 ...)

단일 문자 필드에 unicode (mycolumnlist) 목록을 덤프하고 색인 된 charfield 수를 설정하는 것으로 간주했습니다 그런 후 :

class DumbFlexModel(models.Model): 
    available_fields = models.CharField() 
    field1 = models.CharField() 
    field2 = models.CharField() 
    field3 = models.CharField() 
    ... 

그런 식으로 당신은 적어도 당신이에 대한 vaules을 얻으려고 노력 분야와 그 만에 결과를 필터링 available_fields의 쿼리를 포함 수행 할 수 있지만, 그 위치는 당신이 좋겠 있도록 임의 여전히 각 결과와 프로세스를 거쳐야만 available_fields는 값의 위치를 ​​얻습니다.

아니면 사전에 나열된 일련 번호 (pickle.dumps()) 목록을 덤프해도 되나요?

다른 제안 사항에 관심이 있습니다.