私のアプリでは、いくつかのエントリを持つサーバーで1つのモデルを実行しています。このモデルには、SlugField
、一意で、nullでない値を追加する必要があります。 SlugField
は、trading_name
に基づいて入力されます。私は、この新しいフィールドを追加するために、私のモデルを変更し、メソッドの保存変更した:既に入力されたモデルでヌルでない一意のフィールドを追加してください。
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)
モデルを変更した後、私はmanage.py makemigrations
を実行し、出力として、この移行を持っている:
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,
),
]
I一意のconstrantのためにデフォルト値が機能しないので、manage.py migrate
を実行することはできません。
私の質問は次のとおりです:Django 1.7でどうすればいいですか?私はスキーマの変更を適用し、私のデータベースに現在のエントリを保持する必要があります。
ポストは、あなたの作成、移行、我々はそれを – FrEaKmAn
感謝を変えることができるように@FrEaKmAn - 私は、適切な詳細を追加しました:) – MatheusJardimB