由于没有表实例,Django不允许向DB添加记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由于没有表实例,Django不允许向DB添加记录相关的知识,希望对你有一定的参考价值。
我有一个DB模型:
class building_list(models.Model):
building_id = models.CharField(max_length=25, verbose_name="Building ID", unique=True)
def __unicode__(self):
return self.building_id
class data(models.Model):
oDate = models.DateField()
building_id = models.ForeignKey( building_list, to_field = "building_id" )
content = models.CharField(max_length=25, verbose_name="Content")
def __unicode__(self):
return self.content
通过管理员门户添加记录没有问题,我可以从SELECT列表中选择building_id,一切正常。
但是,当我尝试通过视图添加记录时出现问题。让我告诉你我的代码:
url(r'^(?P<building_id>[w-]+)/$', views.test, name='test'),
def test( request, building_id ):
if request.method == 'POST':
oDate = request.POST.get('oDate', '')
content = request.POST.get('content', '')
row = data(
oDate = oDate,
building_id = building_id,
content = content
)
return True
我看到
Cannot assign "u'BrI9'": "data.building_id " must be a "building_list" instance.
谁能解释我做错了什么?
答案
您已将外键命名为building_id
,因此id为building_id_id
。如果要分配id而不是实例,则必须执行以下操作:
row = data(
oDate=oDate,
building_id_id=building_id,
content=content,
)
Django中推荐的方法是命名你的外键building
。
class data(models.Model):
oDate = models.DateField()
building = models.ForeignKey( building_list, to_field = "building_id" )
现在id是building_id
,你可以这样做:
row = data(
oDate=oDate,
building_id=building_id,
content=content ,
)
以上是关于由于没有表实例,Django不允许向DB添加记录的主要内容,如果未能解决你的问题,请参考以下文章
使用 json 文件向 django 中的数据库添加一些记录