ChoiceFields được lưu trữ trong cơ sở dữ liệu như các giá trị, vì vậy để lấy một ví dụ từ the documentation:
class Foo(models.Model):
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
Cơ sở dữ liệu sẽ lưu trữ 'M' và 'F', vì vậy nếu bạn một ngày quyết định đổi tên những như thế này *:
class Foo(models.Model):
GENDER_CHOICES = (
('M', 'Homme'),
('F', 'Femme'),
)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
Sau đó, bất kỳ nơi nào bạn sử dụng giá trị mở rộng 'Nam' hoặc 'Nữ' giờ sẽ có 'Homme' hoặc 'Femme'.
Nếu bạn muốn thay đổi giá trị (ví dụ 'M' và 'F'), thì bạn sẽ muốn cập nhật cơ sở dữ liệu, vì vậy nếu bạn muốn thay đổi 'M' thành 'H', thì bạn ' d sử dụng update
:
Foo.objects.filter(gender = 'M').update(gender = 'H')
Trừ khi bạn đã có một lý do chính đáng để, tôi muốn tránh làm điều này - vì bạn sẽ cần phải chắc chắn thay đổi của bạn để GENDER_CHOICES
và update
truy vấn của bạn được thực hiện cùng một lúc.
* Và có, điều này tôi biết đây là cách ngu ngốc để dịch!
Nguồn
2011-11-10 10:15:06