如何在postgres中定义Django的多对多字段?

时间:2018-08-12 15:53:59

标签: python django postgresql

我有一个名为Contexts的Django模型,该模型本质上是一个包含用户列表的组。我还有一个名为UserProperty的模型,其中包含一些用户信息。

class Contexts(models.Model):
    context_name = models.CharField(max_length=50)
    context_description = models.TextField()
    users = models.ManyToManyField(UserProperty , related_name='context_users')

def getUserImagePath(instance,filename):
    return "/static/images/%s_%s"% (str(time()).replace('.','_'),filename)

class UserProperty(models.Model):
    username = models.CharField(max_length=255, null=False)
    pic = models.ImageField(upload_to=getUserImagePath, default="/static/images/user.png" ,null=True, blank=True)
    org = models.CharField(max_length=255, null=True)

当我使用django manage.py运行迁移时,这在我的本地系统中可以正常工作。但是由于某种原因,在服务器中,我无法运行迁移,因此我必须在postgres中手动定义模型(服务器使用django _ postgres)。这就是我所做的

CREATE TABLE webhook_contexts(id integer, context_name character varying(100), context_description character varying(100), users text [], FOREIGN KEY (users) REFERENCES webhook_userproperty);

我不确定确切如何在postgres中复制它。对于users模型中的Contexts字段,我做了models.ManyToManyField(UserProperty , related_name='context_users'),所以我假设users必须是数组在包含引用表UserProperty的字段的postgres中,即usernamepicorg。所以我这样做

.., users text [], FOREIGN KEY (users) REFERENCES webhook_userproperty)

但是我得到这个错误

ERROR:  there is no primary key for referenced table "webhook_userproperty"

但是我确实为django视为主键的webhook_userproperty定义了一个id。然后为什么会出现此错误?我的表定义是否错误?

0 个答案:

没有答案