Django 1.5.4 syncdb没有在PostgreSQL 9.1 / PostGIS 2表中创建一些字段

时间:2014-03-20 21:15:54

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

我有一个像这样的Django模型:

class Company(models.Model):
    name=models.CharField(max_length=256, default=''),
    user=models.ForeignKey(User),
    logo=models.ImageField(upload_to='logos')

    def __unicode__(self):
        return unicode(self.name)

运行syncdb后,我得到了这个PostgreSQL表

CREATE TABLE myapp_company (
    id integer NOT NULL,
    logo character varying(100) NOT NULL
);

因此,没有名称字段,也没有用户ID。其他模型类也会发生同样的事情:缺少字段。随便看看。例如,这很奇怪。这个模型

class MapLayer(models.Model):
    cartodb_layer = models.ForeignKey('CartoDBLayer'),
    work_map = models.ForeignKey('WorkMap'),
    overlap = models.BooleanField(default=False),
    min_zoom = models.IntegerField(default=4),
    max_zoom = models.IntegerField(default=14),
    opacity = models.FloatField(default=0.6),
    anti_aliasing = models.FloatField(default=0.5)

生成此PostgreSQL表

CREATE TABLE myapp_maplayer (
    id integer NOT NULL,
    anti_aliasing double precision NOT NULL
);

那么,为什么只有id和最后一个字段(一个浮点数),而不是任何其他字段?

同样的问题试图运行schemamigration --initial via South 0.8.2。但事实上即使是简单的syncdb失败也让我觉得这不是南方问题。

我的软件版本:

  • Django 1.5.4
  • 南0.8.2
  • PostgreSQL 9.1 + PostGIS 2

任何线索?

1 个答案:

答案 0 :(得分:0)

解决。有史以来最愚蠢的错误。问题是逗号。所以,我需要替换

class Company(models.Model):
    name=models.CharField(max_length=256, default=''),
    user=models.ForeignKey(User),
    logo=models.ImageField(upload_to='logos')

    def __unicode__(self):
        return unicode(self.name)

使用

class Company(models.Model):
    name=models.CharField(max_length=256, default='')
    user=models.ForeignKey(User)
    logo=models.ImageField(upload_to='logos')

    def __unicode__(self):
        return unicode(self.name)