gpt4 book ai didi

django - UNIQUE 约束失败

转载 作者:行者123 更新时间:2023-12-05 01:00:03 24 4
gpt4 key购买 nike

我正在使用 Django 进行 Tango,但我无法解决这个练习。我得到 django.db.utils.IntegrityError: UNIQUE constraint failed:rango_category.name 错误。这是在我尝试将 views 属性实现到 Category 对象之后。这是我的数据库填充脚本的摘录。我虽然也许我应该 makemigrations 然后 migrate 来更新数据库的模型。然而,这并没有帮助。

    cats = {
'Python' : {'pages': python_pages, 'views':128},
'Django': {'pages': django_pages, 'views':128},
"Other Frameworks": {'pages':other_pages, 'views':128},
}

for cat, cat_data in cats.items():
c = add_cat(cat, cat_data['views'])
for p in cat_data["pages"]:
add_page(c, p['title'], p['url'])

for c in Category.objects.all():
for p in Page.objects.filter(category=c):
print("- {0} - {1}".format(str(c), str(p)))

def add_cat(name, views):
c = Category.objects.get_or_create(name=name, views=views)[0]
c.views=views
c.save()
return c

添加Category模型:

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



class Meta:
verbose_name_plural = 'Categories'

def __str__(self):
return self.name

最佳答案

您收到错误是因为 name = models.CharField(max_length=128, unique=True) 中的 unique = True 意味着 Django 将引发约束错误 如果您尝试保存具有相同 name 值的新实例,则 UNIQUE 约束失败;违反唯一性约束

get_or_create 不起作用,因为即使 name 等于 name

当您 createget 您的实例时,您可以只使用 name 字段

def add_cat(name, views):
c = Category.objects.get_or_create(name=name, <b><s>views=views</s></b>)[0]
c.views=views
c.save()
return c

关于django - UNIQUE 约束失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50747412/

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