django.db.utils.IntegrityError:唯一约束失败:rango_category__new.slug

2024-01-16

我正在使用 Django 从 Tango 学习 Django,但是当我输入以下内容时,我不断收到此错误:

python manage.py makemigrations rango
python manage.py migrate

这是输出:

django.db.utils.IntegrityError: UNIQUE constraint failed: rango_category__new.slug

模型.py:

from django.db import models
from django.template.defaultfilters import slugify

class Category(models.Model):
    name = models.CharField(max_length=128, unique=True)
    views = models.IntegerField(default=0)
    likes = models.IntegerField(default=0)
    slug = models.SlugField(unique=True)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        super(Category, self).save(*args, **kwargs)

    def __unicode__(self):
        return self.name


class Page(models.Model):
    category = models.ForeignKey(Category)
    title = models.CharField(max_length=128)
    url = models.URLField()
    views = models.IntegerField(default=0)

    def __unicode__(self):
        return self.title

此限制的原因可能是您没有任何名为的字段slug in Category当您最初迁移它(第一次迁移)时,以及在模型中添加此字段后,当您运行时makemigrations,您已将默认值设置为静态值(即None or ''等),这打破了类别表 slug 列的唯一约束,其中 slug 应该是唯一的,但事实并非如此,因为所有条目都会获得该默认值。

要解决此问题,您可以删除数据库和迁移文件并重新运行makemigrations and migrate或设置一个唯一的默认值,如下所示:

slug = models.SlugField(unique=True, default=uuid.uuid1)

Edit:

根据添加独特字段的迁移 https://docs.djangoproject.com/en/2.2/howto/writing-migrations/#migrations-that-add-unique-fields,修改您的迁移文件以克服唯一约束。例如,修改您的迁移文件(将 slug 字段添加到模型中),如下所示:

import uuid
from app.models import Category  # where app == tango_app_name

class Migration(migrations.Migration):

    dependencies = [
        ('yourproject', '0003_remove_category_slug'),
    ]

    def gen_uuid(apps, schema_editor):
        for row in Category.objects.all():
            row.slug = uuid.uuid4()
            row.save()

    operations = [
        migrations.AddField(
            model_name='category',
            name='slug',
            field=models.SlugField(default=uuid.uuid4),
            preserve_default=True,
        ),
        migrations.RunPython(gen_uuid),

        migrations.AlterField(
            model_name='category',
            name='slug',
            field=models.SlugField(default=uuid.uuid4, unique=True),
        ),
    ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

django.db.utils.IntegrityError:唯一约束失败:rango_category__new.slug 的相关文章

随机推荐

  • Python pandas 绘制如果孪生两个 y 轴则移动 x 轴

    我有一个包含 3 列的数据框 其中一列是 groupby 列 另外两列是带有值的 普通 列 我还想生成箱线图和条形图 在条形图上 我想可视化每个组元素出现的次数 让我的示例代码更详细地告诉这个数据框 li str one two three
  • 使用katex,“&”对齐符号显示为“amp;”

    我正在使用 katex 来渲染数学 https github com Khan KaTeX https github com Khan KaTeX 一般来说 为了让它工作 我链接到文件katex min js and katex min c
  • 地图 API - 街道上的标记

    在 Maps API 中 有没有办法将标记捕捉到街道 通常 如果您想按地址 而不是经纬度 设置标记 则标记会设置在建筑物内的某个位置 就我而言 如果您有例如一个有几家商店的大型购物中心 我宁愿在街上立一个标记 我正在使用地图 API v3
  • AssertionError:您需要在 UserProfile.Meta 中传递有效的 Django 模型,收到“无”

    我使用 AbstractBaseUser 自定义用户模型将 Django 模型添加到 graphql api 管理员工作正常 只是在尝试访问 graphql api 时出现错误 您需要在 UserProfile Meta 中传递有效的 Dj
  • MySQL 整数字段在 PHP 中以字符串形式返回

    我在 MySQL 数据库中有一个表字段 userid INT 11 所以我用这个查询将它调用到我的页面 SELECT userid FROM DB WHERE name john 然后为了处理结果我这样做 row result gt fet
  • Here Maps Routing API V8 - 多个路径点

    我对 Here Maps Routing API v8 非常陌生 我已经尝试过这里提供的示例 https developer here com documentation maps 3 1 15 1 dev guide topics rou
  • 在 C# 中使用 Directory.GetFiles 和正则表达式?

    我有这个代码 string files Directory GetFiles path SearchOption AllDirectories 我想要的是仅返回不以以下内容开头的文件p and t 并具有扩展名 png 或 jpg 或 gi
  • .External.graphics R 中的错​​误

    我使用下面的函数从 48 列 X 32 行的矩阵创建热图 heatmap 2 all data Rowv FALSE Colv FALSE trace none main All data col colorRampPalette c gr
  • 如何在Authorize.net中查看交易已结算/未结算?

    如何在authorize net中查找用户进行的交易是否已结算或未结算 我正在使用AIM 我想通过编码 当交易完成时 我找不到交易状态 但我想知道它是已结算还是未结算的交易 提前致谢 您无法通过编码获取此信息 因为 Authorize Ne
  • 如何计算具有重复元素的列表的排列(排列)

    我有一个包含重复元素的列表 即orig 1 1 1 2 2 3 我想创建一个精神错乱 https en wikipedia org wiki Derangement b f orig 这样对于每个位置值b与值不同orig b i orig
  • 不安全的 C 函数及其替换

    如果我错了 请纠正我 我在网站上进行了研究 但找不到针对此问题的任何综合帖子 C 中有许多不安全函数可能导致缓冲区溢出 并且有安全函数来替代它们 我有几个 gets 替换为 fgets sprintf 替换为 strcat 替换为 strc
  • 使用 AngularJS 的数据表中的单元格按钮

    我正在使用 angularjs 构建一个网站 并从网络服务获取数据 我需要将该数据填充到数据表中 并为每一行创建一个编辑按钮 经过一番调查我想出了this http jsfiddle net ultrasardine 7kLFU 485 问
  • 网站未在某些页面加载 css 文件

    我正在构建的网站不会加载某些页面的任何 css javascript 文件 有问题的页面是 Markdown 帖子文件 我正在使用 Jekyll 来构建该网站 链接在这里 http joshhornby co uk http joshhor
  • 如何将数组转换为元组?

    我有一个Array Any 来自 Java JPA 包含 在本例中为两个 但考虑任意少量 不同类型的事物 我想将它们表示为元组 我有一些快速而肮脏的转换代码 并且想知道如何改进它并使其更加通用 val pair query getSingl
  • 如何在jvm上运行scala字节码?

    如何在 jvm 上运行编译后的 scala 代码 当我尝试以下命令时 java cp scala library jar cp bin com mcmc5 Main 我收到以下错误 Exception in thread main java
  • 将多个正则表达式连接成一个正则表达式

    对于文本文件 我想匹配以 BEAM 和 FILE PATH 开头的字符串 我会用 BEAM FILE PATH 如果我要单独匹配它们 但现在我必须将这两个匹配模式连接成一个模式 关于如何做到这一点有什么想法吗 竖线 竖线字符通常用正则表达式
  • MSTest 似乎毫无原因地挂起

    从命令行运行 MSTest 测试在 等待运行 代理 时挂起 没有任何错误或超时 原因可能是 队列中没有运行 但为什么会这样我不知道 因为exact同样的测试在另一台机器上运行得很好 我们最近从在测试机器上评估 TeamCity 转向将其安装
  • 如何处理 Perl 正则表达式中的特殊字符?

    我正在使用 Perl 程序从文件中提取文本 我有一个字符串数组 用作文本的分隔符 例如 pat arr 1 arr 2 if src pat print 1 但是 数组中的两个字符串是 450 and Buy now 这些的问题在于字符串中
  • Android:应用内购买查询不返回任何产品(skuDetails)

    我正在开发我的第一个 Android 应用程序 我确实在堆栈溢出方面学到了很多东西 但我目前的问题还没有找到解决方案 我尝试实现 应用内购买 我做了以下事情 1 在开发者控制台中 我上传了经过 alpha 和 beta 测试的已签名 apk
  • django.db.utils.IntegrityError:唯一约束失败:rango_category__new.slug

    我正在使用 Django 从 Tango 学习 Django 但是当我输入以下内容时 我不断收到此错误 python manage py makemigrations rango python manage py migrate 这是输出