2011-11-10 2 views
22

여러 장의 선택으로 구성된 장고 모델에 choicefield가 있다고 가정 해 보겠습니다. 이제 앞으로 기존 선택 (옵션)을 다른 이름 (선택)으로 변경하면 해당 옵션 (옵션)이있는 모델의 기존 레코드도 변경 될 것인가? 또는 관리자 페이지에서 수동으로 새 옵션을 설정해야합니까?ChoiceField in Django model

어떻게하면됩니까?

답변

79

ChoiceFields 그렇게 the documentation에서 예를 데리고, 값으로 데이터베이스에 저장됩니다

class Foo(models.Model): 
    GENDER_CHOICES = (
     ('M', 'Male'), 
     ('F', 'Female'), 
    ) 
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES) 
당신이 어느 날 그 이름을 변경하기로 결정 그래서 만약 데이터베이스가 'M'과 'F'를 저장합니다

이 * 같은 :

class Foo(models.Model): 
    GENDER_CHOICES = (
     ('M', 'Homme'), 
     ('F', 'Femme'), 
    ) 
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES) 

그럼 어디 당신은 확장 된 값을 '남성'또는 '여성'지금 '옴므'하거나 '팜므'됩니다 사용합니다.

값을 변경하려는 경우 (예 : 'M'및 'F') 데이터베이스를 업데이트해야하므로 'M'을 'H'로 변경하려면 ' D 사용 update : 당신이, 내가이 일을 피할 것 좋은 이유를 가지고하지 않는 한

Foo.objects.filter(gender = 'M').update(gender = 'H') 

- 동시에 완료 GENDER_CHOICES로 변경하고 update 쿼리를 확인해야하기 때문이다.

* 예, 이것은 번역을 수행하는 어리석은 방법입니다.