2010-02-04 10 views
2

정수 배열을 가진 db 테이블이 있습니다. 그러나이 필드를 내 모델에 어떻게 추가 할 수 있습니까? 나는 IntegerField를 사용하지만,에가django에서 배열을 사용하는 방법

int() argument must be a string or a number, not 'list 

가 어떻게 내 모델이 필드를 추가 할 수있는 오류를주고있다 저장을 쓰기 시도? 내 views.py에서이 필드를 사용하므로 내 모델에 추가해야합니다. 어떤 제안?

+0

데이터베이스의 데이터 유형은 무엇입니까? 어떤 데이터베이스를 사용하고 있습니까? –

답변

7

당신은 CommaSeparatedIntegerField를 사용에 관심이있을 수 :

는 여기에 문서입니다.

이 같은 정수의 목록을 가지고있는 경우에 :

my_ints = [1,2,3,4,5] 

이 같은 모델 :

:

class MyModel(models.Model): 
    values = CommaSeparatedIntegerField(max_length = 200) 

는 다음과 같은 MyModelmy_ints을 절약 할 수 있습니다

m = MyModel(values = ','.join(my_ints)) 
m.save() 
1

나는 database normalization을 살펴볼 것입니다. 특히 데이터베이스는 정규화 된 데이터가 반복 그룹을 포함해서는 안된다는 일반 양식의 첫 번째 및 아마도 가장 중요한 첫 번째 정규화 된 형식이 아닙니다. 결과적으로 Django 객체 - 관계형 매퍼는 데이터를 모델링하는 데 상당한 어려움을 겪게됩니다.

Django는 단 하나의 반복되지 않는 유형 만 지원하므로 어떤 의미에서 Django는 데이터에 첫 번째 정규 형식을 적용합니다. 이 특정 필드를 관리하거나 인터넷에서 코드를 찾을 수있는 SQL을 직접 작성할 수도 있지만이 필드를 자체 모델에서 다 대일 관계로 리팩토링하는 것이 좋습니다. Django 문서는 here에서 찾을 수 있습니다.

1

단서없는 답변은 아마도 당신이 얻을 수있는 최선의 방법 일 것입니다.하지만 여전히 숫자 필드를 하나의 필드에 저장하려는 경우 수동으로 입력 할 수 있습니다. pickling 한 다음 TextField에 저장하거나 자동으로 이와 같은 작업을 수행하는 사용자 정의 모델 필드를 작성합니다. http://docs.djangoproject.com/en/1.1/howto/custom-model-fields/

1

내 모델의 textfield를 말하면서 작동합니다. 그저 f만을 사용하고 있기 때문에 그것을 읽는 ield는 효과가 없습니다

관련 문제