>

모델과 모델이 많이있는 Django 웹 애플리케이션을 만들었습니다. 문제는 이미 사용중인 모델 중 하나에 다른 필드를 추가하고 싶습니다 (1000 개가 넘는 인스턴스가 있음). 과거에 Django Migrations에서 어려운 경험을했으며 필드를 추가하여 모델을 수정하면 웹 애플리케이션이 작동하지 않을까 걱정됩니다.

웹 애플리케이션의 기능에 영향을 미치지 않는 방식으로 모델을 어떻게 변경합니까?


  • 답변 # 1

    다음은 문제를 일으키지 않고 문제를 해결해야합니다.

    필요한 경우 django admin의 필드를 확인하여 데이터가 올바르게 채워 졌는지 확인할 수 있습니다.

    그러나 프로덕션 환경에 문제가 발생할지 걱정하지 않고 이러한 종류의 테스트를 수행 할 수 있도록 개발 환경을 설정하는 것이 좋습니다.

    이것이 도움이되기를 바랍니다!

    <시간>

    초기 :

    Models.py

    class ExampleModel(models.Model):
        name = models.CharField(blank=True, null=True)
    
    

    첫 번째 변경 사항 :

    Models.py

    class ExampleModel(models.Model):
        name = models.CharField(blank=True, null=True)
        unique_str = models.CharField(blank=True, null=True) # add this here
    
    

    실행 :

    python manage.py makemigrations
    python manage.py migrate
    
    

    그러면 스크립트를 실행하여 unique_str을 채울 수 있습니다 :

    # get all model instances
    example_models = ExampleModel.objects.all()
    # update each unique_str as required
    for e in example_models:
        e.unique_str = e.pk # add any required logic here to assign value to this variable
        e.save()
    
    

    마침내 :

    Models.py

    class ExampleModel(models.Model):
        name = models.CharField(blank=True, null=True)
        unique_str = models.CharField(blank=True, null=True, unique=True) # add unique
    
    

    다시 실행 :

    python manage.py makemigrations
    python manage.py migrate
    
    

관련 자료

  • 이전 c - 이진 파일에서 레코드 수정
  • 다음 ruby on rails - "날짜 관련"을 기준으로 정렬하는 방법은 무엇입니까?