Tôi có một mô hình trong ứng dụng đang chạy trong một máy chủ có một số mục nhập. Tôi cần phải thêm một SlugField
, duy nhất và không null cho mô hình này. SlugField
sẽ được điền dựa trên trading_name
. Tôi đã thay đổi mô hình của tôi để thêm lĩnh vực mới này và điều chỉnh tiết kiệm phương pháp:Thêm trường không rỗng và duy nhất với mô hình đã được điền sẵn
class Supplier(StatusModel):
SLUG_MAX_LENGTH = 210
slug = models.SlugField(unique=True, max_length=SLUG_MAX_LENGTH)
trading_name = models.CharField(max_length=200, verbose_name=_('trading name'))
...
def save(self, *args, **kwargs):
self.slug = orig = slugify(self.trading_name)[:Supplier.SLUG_MAX_LENGTH]
for x in itertools.count(1):
if not Supplier.objects.filter(slug=self.slug).exists():
break
# Truncate the original slug dynamically. Minus 1 for the hyphen.
self.slug = "%s-%d" % (orig[:Supplier.SLUG_MAX_LENGTH - len(str(x)) - 1], x)
self.full_clean()
super(Supplier, self).save(*args, **kwargs)
Sau khi thay đổi mô hình, tôi đã chạy manage.py makemigrations
và đã di cư này là đầu ra:
class Migration(migrations.Migration):
dependencies = [
('opti', '0003_auto_20141226_1755'),
]
operations = [
migrations.AddField(
model_name='supplier',
name='slug',
field=models.SlugField(unique=True, default='', max_length=210),
preserve_default=False,
),
]
tôi không thể chạy manage.py migrate
vì giá trị mặc định sẽ không hoạt động do dấu duy nhất.
Câu hỏi của tôi là: Làm cách nào tôi có thể thực hiện việc này với Django 1.7? Tôi cần phải áp dụng thay đổi lược đồ và giữ các mục nhập hiện tại trong cơ sở dữ liệu của tôi.
Đăng di chuyển đã tạo của bạn để chúng tôi có thể thay đổi nó – FrEaKmAn
Cảm ơn @FrEaKmAn - Tôi đã thêm chi tiết phù hợp :) – MatheusJardimB