2016-06-23 2 views
7

방금 ​​proxy model을 만들었으며 manage.py makemigrationsmigrations.CreateModel 작업으로 새 마이그레이션 파일을 만듭니다.Django가 프록시 모델 용 마이그레이션 파일을 만드는 이유는 무엇입니까?

프록시 모델은 새 데이터베이스 테이블을 만들지 않으며, 동일한 데이터 세트와는 다른 파이썬 인터페이스이며 사실 manage.py sqlmigrate my_app_label 0042은 아무 것도 반환하지 않습니다.

프록시 모델 ContentType을 만드는 데 사용될 수 있다고 생각했지만 존재하지 않는 경우 필요에 따라 만들어졌습니다.

프록시 모델 사용 권한 생성을 트리거하는 데 사용됩니까? 프록시 모델 권한에 6 year old open bug이 있습니다. 따라서이 부분이 지금 어떻게 작동해야하는지 잘 모르겠습니다 ...

이 테스트에는 Django 1.8이 사용되었습니다.

편집가 : 명확히하기 위해, Django 그래서 우리는 그것이 아무 소용이 있는지 Django 첫 번째 장소에서 마이그레이션을 만들 싶지 않을 것이다 새 프록시 모델 아무것도하지 않는 마이그레이션을 만들어?

마이그레이션을 수행하는 것이 유용한 유스 케이스가 있습니까?

답변

9

아,하지만 편집기에서 이전을 열면 실제로 비어있는 것으로 나타납니다. 여기에 예를

class Migration(migrations.Migration): 
    dependencies = [ 
     ('stackoverflow', '0009_auto_20160622_1507'), 
    ] 

    operations = [ 
     migrations.CreateModel(
      name='MyArticle', 
      fields=[ 
      ], 
      options={ 
       'proxy': True, 
      }, 
      bases=('stackoverflow.article',), 
     ), 
    ] 

입니다 그리고 당신은 내가 무엇을 얻을 것은 이것은 (아무것도)

다음 줄에 무엇 없습니다 (위의 내 마이그레이션에 해당하는 숫자 인) ./manage.py sqlmigrate myapp 0010을 할 경우 fields 부분 때문에 는 proxy = True입니다. 이렇게하면이 이주에 대해 SQL이 실행되지 않으며 원래 테이블은 변경되지 않습니다.

그럼 왜 장고가 빈 마이그레이션을 만드는 것을 귀찮게합니까? 이는 향후 마이그레이션에서 프록시 모델이 다른 모델에 의해 참조 될 수 있기 때문입니다.