django可以更新foreignkey使用SQL吗?

时间:2014-10-13 07:29:59

标签: django postgresql

我首先将数据填入postgreSQL而没有输入外键。

这是我的models.py

class BeverageMenu(models.Model):
    brand = models.CharField(max_length=255, null=True)                 
    area = models.CharField(max_length=50, blank=True, null=True)      

class DMenu(models.Model):
    dmenu = models.ForeignKey(BeverageMenu,null=True,blank=True)
    category = models.CharField(max_length=255, null=True)
    product = models.CharField(max_length=255, null=True)

我用这种方式来更新外键:

>>> from psql.models import BeverageMenu,DMenu
>>> menu1 = BeverageMenu.objects.get(id=1)    
>>>product = DMenu.objects.filter(area='North')
>>>product.update(dmenu=menu1)  

我想知道我可以直接使用SQL来做这件事吗?

我试试这个但是失败了

INSERT INTO psql_dmenu(category,product,dmenu) VALUES ('hot','soup',1), 

ERROR:  column "dmenu" of relation "psql_dmenu" does not exist

1 个答案:

答案 0 :(得分:1)

你可以,但你为什么要这样? Django有一个模型层,原因是为了使数据库更容易处理,更少依赖SQL。

但是,对于您的问题,问题是ForeignKey的基础数据库列包含前缀_id:所以您的字段为dmenu_id