2013-06-24 2 views
0

최근에 다음과 같은 문제를 다루고 있습니다. 다양한 소스의 데이터를 저장하고 검색하기 위해 "아카이브"를 만들려고하므로 데이터의 수는 항상 다릅니다. 열과 행. 나는 사용자가 CSV 파일 (각각 별도의 파일에 저장)을 저장하기 위해 새로운 테이블을 생성 할 수 있도록 허용하는 것이 웹 개발 지침을 심각하게 위반할뿐만 아니라 장고에서 성취하기가 어렵다고 생각한다. 그래서 데이터를 저장하기위한 속성 값 형식 아이디어를 생각해 냈습니다.하지만 장고에서 구현하는 방법을 모르겠습니다.속성 값 모델에 csv 파일 업로드

Django Admin에서 양식을 작성하여 N- 열이있는 CSV 파일을 두 개의 열만있는 테이블에 업로드 할 수있게하려는 경우 : 1) CSV 파일의 열 이름과 2) 해당 열의 값 (더 정확하게는 세 개의 값 열 : 하나는 정수, 하나는 float, 하나는 문자열을 저장하는 것입니다. 이렇게하려면 CSV 파일의 데이터를 "긴"형식으로 "녹여야"합니다. 파일 :

col1 | col2 | col3 
23 | 45.0 | 32 

key| val 
col1| 23 
col2 | 45.0 
col3 | 32 

를 그리고이 경우 내가하는 방법을 알고하지만, 난 몰라 :

이된다. 사용자가 업로드 한 파일을 이러한 형식으로 처리 할 수 ​​있으며, 나중에 간단한 장고 방법으로 데이터를 검색하는 방법도 있습니다. 이러한 확장 프로그램/와이드 릿 또는 문제를 해결하는 방법에 대해 알고 계십니까? 또는 심지어 구글을 어떻게 할 것인가? 그러나 내 연구를 수행했지만 동적 모델에 대한 일반적인 접근 방법 만 찾았습니다. 내 경우에는이 모델을 사용해야한다고 생각하지 않습니다. http://en.wikipedia.org/wiki/Entity-attribute-value_model 동적 모델 접근 방식은 https://pypi.python.org/pypi/django-dynamo입니다. 그러나 올바른 모델인지는 확실하지 않습니다. 대답.

그래서 내 생각 엔 장고를 잘 이해하지 못한다고 생각하지만 일부 지침에 대해서는 감사 할 것입니다.

+0

한 장씩 가져옵니다. 그렇지 않으면 누락 된 퍼즐 조각을 알 수 없습니다. 어떤 모델을 정의 했습니까? 귀하의 양식은 어디에 있습니까? 템플릿은 어디에 있습니까? django의 어떤 부분을 이해하지 못합니까? 공식 자습서를 사용해 보셨습니까? – rantanplan

+0

예.하지만 제가하고 싶은 일은 거기에서 다루지 않습니다. 더 명확하게 질문을 편집하겠습니다. 감사합니다 – mhnatiuk

답변

1

아니요. 동적 모델이 필요하지 않습니다. EAV (Entity Attribute Value) 스키마는 피해야합니다. 나쁜 생각이에요.

업로드 된 파일을 처리하는 방법은 here을 읽으십시오.

save() 인스턴스 메서드를 재정의하는 방법은 here을 참조하십시오. 이것은 일 것입니다.

또한 melting 전화 번호는 serializing입니다. 이 주제를 검색 할 때 올바른 용어와 정의를 알고 있으면 도움이되는 입니다.

+0

예, 대단히 감사합니다, 지금 나는 무엇을 위해 구글을 알아! 나는 어떤 용어를 사용해야하는지에 대해 궁금 해서요, 나는 stastistical 한 배경을 가지고 있으며, "녹는"이라는 용어를 사용하는 것이 일반적입니다 (적어도 R에서는). 또한, 나는 당신의 대답을 투표 할 수 없습니다. 왜냐하면 그것은 제가 처음 몇 년 동안의 주제 였기 때문입니다. :) – mhnatiuk

+0

@mhnatiuk 투표에 대해서는 괜찮습니다. 받아 줘서 고마워. 행운을 빌어 문제를 해결하십시오. – rantanplan

+0

OK, 문제를 재고 한 후에 : 이전에 설명한대로 데이터를 쉽게 저장할 수 있다는 것을 알았지 만 또 다른 질문을 제기했지만 다른 수준에서 : 당신 (@rantanplan)이 명시 적으로 말한 설계 질문 이전에 csv 데이터를 "긴"형식으로 저장하는 것이 좋습니다.다시 말하면 데이터 자체는 행과 열의 길이가 다르며 나중에 내가하고 싶은 일은 데이터를 쉽게 하위 집합으로 지정하는 것입니다 ("select *** where some_condition_is_met"). 그리고 다른 데이터 세트를 병합하기도합니다. 읽을 방법이나 강좌를 권할 수 있습니까? – mhnatiuk