Django syncdb找不到postgres查看ForeignKey关系

时间:2014-06-20 13:33:15

标签: django postgresql view django-models django-syncdb

我正在尝试为postgres视图创建ForeignKey关系。这最初是使用不同的模型,但现在我已经创建了第二个模型,但似乎无法创建新表。

我给出的错误是: DatabaseError: referenced relation "countryzone" is not a table

Country模型的定义如下:

class Country(models.Model):
    code = models.CharField(
        db_column = 'countrycode',
        primary_key = True,
        max_length = 2,
    )
    name = models.CharField(
        max_length = 100,
        db_column = 'countryname',
        unique = True,
    )
    language_code = models.CharField(
        max_length = 8,
        null = True,
    )
    country_level = models.IntegerField()
    latitude = models.DecimalField(
        db_column = 'clat',
        decimal_places = 3,
        max_digits = 8,
        null = True,
    )
    longitude = models.DecimalField(
        db_column = 'clong',
        decimal_places = 3,
        max_digits = 8,
        null = True,
    )
    timezone = models.IntegerField()
    zone = models.CharField(max_length=1)
    transit_time = models.IntegerField()

    ## MANAGER
    objects = CountryManager()

    ## META DATA
    class Meta:
        db_table = 'countryzone'

我的新模型通过以下方式创建ForeignKey:

country = models.ForeignKey(
    to = 'location.Country',
    db_column = 'countrycode',
)

我引用了来自不同类的Country模型,没有任何问题:

countrycode = models.ForeignKey(
    to = 'location.Country',
    db_column = "countrycode",
)

我可能出错的任何想法或我应该查找的问题以找到我的问题? 谢谢!

2 个答案:

答案 0 :(得分:0)

表的名称必须是location_countryzone。

答案 1 :(得分:0)

看起来syncdb无法自行处理,我需要使用manage.py sqlall来获取正确的查询并自行运行。一旦这样做,表格在未来的syncdb尝试中被跳过,所以我能够继续使用它。