gpt4 book ai didi

django - 使用已填充的模型添加非空且唯一的字段

转载 作者:行者123 更新时间:2023-12-03 06:55:43 27 4
gpt4 key购买 nike

我的应用程序中有一个模型在带有一些条目的服务器中运行。我需要为此模型添加一个唯一且非空的 SlugFieldSlugField 将根据 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,
),
]

我无法运行 manage.py migrate,因为由于唯一常数,默认值不起作用。

我的问题是:如何使用 Django 1.7 做到这一点?我需要应用架构更改并将当前条目保留在我的数据库中。

最佳答案

不幸的是,我没有找到答案,但我可以创建一个解决方案:

  • 首先,我创建了一个允许 slug 字段可为空的迁移;
  • 然后,我创建了另一个迁移,用正确的值填充模型中每一行的 slug 列;
  • 然后进行另一次迁移,在列中添加非空约束。

关于django - 使用已填充的模型添加非空且唯一的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27749300/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com