Python Django不';由于没有表实例,不允许将记录添加到数据库
我有一个DB模型: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
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 ,
)