Django South Postgres 数据迁移问题

标签 django postgresql django-south

我正在添加一个新模型,运行架构迁移。然后通过数据迁移将数据添加到该表。我在 Postgres 数据库上运行它。我已经在本地 SQLite 数据库上成功运行了它,所以我猜测这是一个特定于数据库的问题。数据迁移中出现的错误是:

Error in migration: app:0109_add_reservation_rates
DatabaseError: column "rate_currency" specified more than once
LINE 1: ...rate_currency", "rate", "reservation_id", "date", "rate_curr...
                                                             ^

South 没有给我提供更好的错误,而且我还没有找到一种方法来生成 South 应该运行的 SQL。我检查了架构迁移、数据迁移,没有重复的字段名称...

以下是实际的迁移: 0108_etc...py

# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models


class Migration(SchemaMigration):

    def forwards(self, orm):
        # Adding model 'ReservationRate'
        db.create_table(u'app_reservationrate', (
            (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
            ('created_on', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
            ('updated_on', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
            ('reservation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='reservation_rates', to=orm['app.Reservation'])),
            ('room', self.gf('django.db.models.fields.related.ForeignKey')(related_name='reservation_rates', to=orm['app.Room'])),
            ('date', self.gf('django.db.models.fields.DateField')(db_index=True)),
            ('rate_currency', self.gf('djmoney.models.fields.CurrencyField')(default='USD')),
            ('rate', self.gf('djmoney.models.fields.MoneyField')(max_digits=10, decimal_places=2, default_currency='USD')),
        ))
        db.send_create_signal(u'app', ['ReservationRate'])

        # Adding unique constraint on 'ReservationRate', fields ['reservation', 'room', 'date']
        db.create_unique(u'app_reservationrate', ['reservation_id', 'room_id', 'date'])

0109_etc...py

coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import DataMigration
from django.db import models

class Migration(DataMigration):

    def forwards(self, orm):
        for reservation in orm.Reservation.objects.all():
            # Loop through some code, get rates, and dates for creating ReservationRate objects...
            orm.ReservationRate.objects.create(reservation=reservation, room=stay.room, date=date, rate=rate)

有人知道如何解决这个问题吗?

最佳答案

不太清楚为什么,但运行 ./manage.py migrate -v2 app 使一切正常工作。我相信该选项应该运行迁移并输出有关其运行内容的更多信息。

关于Django South Postgres 数据迁移问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17410561/

相关文章:

django - Django 服务静态文件时出现 404 错误。如何设置 Django 来提供静态文件?

php - 在 php 的 postgresql bytea 列中插入 pdf/images

postgresql - 有人有默认的 PostgreSQL pg_hba.conf 文件吗?

postgresql - 进行Hasura容器和运行控制台的迁移

python - Django 与南方 : Adding new field but DatabaseError occurs "table already exists"

python - 保存 django mongoengine 模型实例时,EmbeddedDocumentField 项无效(save() 失败)

Django 管理员 : hide read-only fields on new records?

Django 默认值=timezone.now + delta

django - 迁移时传递 South 随机唯一默认值

Django 南 : How to create rules for a Custom Field?