2011-11-17 6 views
0

방금 ​​다중 데이터베이스 상속을 사용하기 위해 DB의 일부분을 재 설계했고 모든 것이 훨씬 쉬워졌습니다!django 모델 상속 - 멀티 테이블 - 수동 삽입

하나의 질문이 있습니다. 수천 개의 행을 테이블에 수동으로 삽입하려고하는데, 어떻게해야 할지를 알 수 없습니다.

예 :

class personal(models.Model): 
    who = models.CharField... 
    stamp = models.DateTime... 
    title = models.CharField ... 
    descr = models.CharField ... 

와 파이썬 쉘에서 : 전에

for i in range(1000): 
    t=datetime.now() 
    e=timedelta(minutes=i) 
    entry = personal(who='xyz', stamp=t+e, title='title '+str(i), descr='description for '+str(i) 
    entry.save() 

후 : 그것이 말하는 위와 같이 나는 같은 일을

class common(models.Model): 
    who ... 
    stamp ... 

class personal(common): 
    title ... 
    descr ... 

와 파이썬 쉘에서 할 경우 개인이 누군지/우표라는 열이 없다

내 질문 : 어떻게 새 DB에 여러 행을 삽입하려면 위의 '조정할 수 있습니까?

감사합니다.

class common(models.Model): 
    who ... 
    stamp ... 

    class Meta: 
     abstract = True 

class personal(common): 
    title ... 
    descr ... 

그리고 위의 코드를 작동합니다 :

답변

0

당신은 아마 추상 모델 상속을합니다.

편집 : 비 추상적 인 상속

, 삽입 코드는 다음과 같이해야한다 :

for i in range(1000): 
    t=datetime.now() 
    e=timedelta(minutes=i) 
    base = common.objects.create(who='xzy', stamp=t+e) 
    entry = personal.objects.create(common_ptr=base, title='title '+str(i), descr='description for '+str(i) 
+0

내가 그것에 대해 생각,하지만 난 추상적 인 모델 상속을 사용하는 경우, 내가 할 수 실 거예요 공통 모델을 사용하려면 - 공통 모델을 사용하여 다음과 같이 마지막 10 개의 항목 (스탬프를 기반으로)을 검색합니다. common.objects.order_by ('- stamp') [: 10] – marlboro

+0

성능 관련 사항을 알고 계시기 바랍니다. 다중 테이블 상속 (비 추상 모델 상속) 장고 있습니다. 주의없이 사용하면 매우 비효율적입니다. – ojii

+0

헤드 업에 감사드립니다 ... 멀티 테이블 상속을 사용하는 유일한 방법은이 마지막 10 개 항목 코드입니다 (적어도 현재는 ...). 코드를 다시 작성해야 할 수도 있습니다. – marlboro