python - 迁移到 heroku postgres db 时出错:为列“id”指定了多个默认值
问题描述
我目前正在将我的 django 应用程序部署到 Heroku,并且在将我的数据库表迁移到 Postgresql 数据库时不断收到错误消息。
我收到以下错误:django.db.utils.ProgrammingError:为表“planning_location”的列“id”指定了多个默认值
我已经尝试了这篇文章中指定的解决方案:django.db.utils.ProgrammingError: multiple default values specified for column "_id" of table "Asset_movie"。然而,不幸的是,这并没有解决它..
这是planning_location 模型的结构:
class Location(models.Model):
name = models.CharField(primary_key=True,max_length=200, unique=True)
locationid = models.UUIDField(default=uuid.uuid4, editable=False)
slug = models.SlugField(max_length=200, editable=False)
description = models.TextField(blank=True, null=True)
created_date = models.DateTimeField(auto_now_add=True)
def save(self, *args, **kwargs): # create slug from name when saving for the first time
if not self.slug:
self.slug = slugify(self.name)
super(Location, self).save(*args, **kwargs)
名称是主键,这对于应用程序的另一部分至关重要。因为我没有另一个 id 字段,所以我创建了一个 UUID 字段,它作为第二个 id,而不是主键。
有谁知道为什么这不起作用,以及可以改变什么以使其成功?
解决方案
我想出了如何解决这个问题(在 reddit 用户的帮助下)。事实证明,您不应该将 primary_key=True 与 unique=True 结合使用。
所以我应该把我的模型改成这样:
class Location(models.Model):
name = models.CharField(primary_key=True,max_length=200)
locationid = models.UUIDField(default=uuid.uuid4, editable=False)
slug = models.SlugField(max_length=200, editable=False)
description = models.TextField(blank=True, null=True)
created_date = models.DateTimeField(auto_now_add=True)
def save(self, *args, **kwargs): # create slug from name when saving for the first time
if not self.slug:
self.slug = slugify(self.name)
super(Location, self).save(*args, **kwargs)
推荐阅读
- javascript - KendoUI - 选择时禁用某些节点
- binding - 如何在 SwiftUI(或替代方法)的主体方法中初始化派生变量
- sql - 如何创建一个将记录从一个表插入到另一个表并检查有效性的过程?PL/SQL
- tensorflow - gRPC+MPI 是否需要 RDMA?
- python - 如何解决问题 TypeError: cannot serialize '_io.BufferedWriter' object?
- swift - 在 calloutAccessoryControlTapped 时更改传递给“MapView:UIViewRepresentable”的 BindableObject 的值
- java - ReentrantReadWriteLock 在 ConcurrentHashMap::compute() 中使用时挂起
- scala - 如何根据字符串动态构造带参数的子类
- php - 是什么导致我的 Heroku PHP 应用程序中的引导失败?
- snowflake-cloud-data-platform - 如何在 Snowflake 中加载包含多个 zip 文件的表格?