Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django不';由于没有表实例,不允许将记录添加到数据库_Python_Django_Django Models_Django Views - Fatal编程技术网

Python Django不';由于没有表实例,不允许将记录添加到数据库

Python Django不';由于没有表实例,不允许将记录添加到数据库,python,django,django-models,django-views,Python,Django,Django Models,Django Views,我有一个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.DateF

我有一个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
通过管理员门户添加记录没有问题,我可以从选择列表中选择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

谁能解释我做错了什么

您已将外键命名为建筑id,因此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\u id
,您可以执行以下操作:

row = data( 
    oDate=oDate,
    building_id=building_id,
    content=content ,
)

我在命名约定中看到了很多问题,尤其是类的名称。我发现很难将data()作为实例的初始化来读取。好的,错误消息清楚地表明building_id应该是BuildingList的一个实例,但参数是number。因此,您可能需要初始化building list对象,然后选择“data”row=data(oDate=oDate,building\u id=building\u list.objects.get(building\u id=building\u id),content=content)非常感谢,它解决了问题!
row = data( 
    oDate=oDate,
    building_id=building_id,
    content=content ,
)