Django 1.8.3为现有数据库添加ForeignKey

时间:2015-07-11 01:26:18

标签: python django postgresql django-models

我遵循Django教程4,为我的API资源添加权限。 http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/

我在Postgres中有一个现有的数据库,我可以使用Django API读取/写入值。现在我想通过User.auth添加权限,这需要在DB中添加额外的列。浏览API时出现以下错误:

ProgrammingError at /server/
column server.owner_id does not exist

这是我的服务器型号:

class Server(models.Model):
    discovered = models.BooleanField()
    status = models.SmallIntegerField()
    serialnumber = models.CharField(max_length=100, null=True)
    hostname = models.CharField(max_length=250)
    description = models.CharField(max_length=250, blank=True, null=True)
    created = models.DateTimeField(auto_now_add=True)    
    fk_server_model = models.ForeignKey('ServerModel', db_column='fk_server_model')
    fk_licensing = models.ForeignKey(Licensing, db_column='fk_licensing', blank=True, null=True)
    fk_network_services = models.ForeignKey(NetworkServices, db_column='fk_network_services', blank=True, null=True)
    fk_network_interfaces = models.ForeignKey(NetworkInterfaces, db_column='fk_network_interfaces', blank=True, null=True)
    fk_server_authentication = models.ForeignKey('ServerCredentials', db_column='fk_server_authentication', blank=True, null=True)
    owner = models.ForeignKey('auth.User', related_name='servers')

    def save(self, *args, **kwargs):
        super(Server, self).save(*args, **kwargs)

    class Meta:
        managed = False
        db_table = 'server'

作为本教程的一部分,我希望Django到外键字段 owner_id 但是在执行了以下操作之后:

python manage.py syncdb

我的数据库表服务器没有添加字段而不是与Auth_user表的外键关系。让Django自动生成数据库中的外键的正确方法是什么?我试过了:

python manage.py migrate

有类似的结果 感谢

1 个答案:

答案 0 :(得分:0)

我最终在DB中手动添加了字段。 owner_id在我的表中键入int4并创建FK引用