Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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
Sql Django-id null-外键错误_Sql_Django_Python 2.7_Django Forms - Fatal编程技术网

Sql Django-id null-外键错误

Sql Django-id null-外键错误,sql,django,python-2.7,django-forms,Sql,Django,Python 2.7,Django Forms,错误: 我相信我的问题是我保存时没有将id从formB传递到formA。请给我一个解决这个问题的方法 以下是我的看法: app_a.desc_id may not be NULL 以下是我的模型: def form(request): if request.method == 'GET': formB = BForm() formA = AForm() return render(request,r'app/form.html',{'fo

错误:

我相信我的问题是我保存时没有将
id
formB
传递到
formA
。请给我一个解决这个问题的方法

以下是我的看法:

app_a.desc_id may not be NULL
以下是我的模型:

def form(request):
    if request.method == 'GET':
        formB = BForm()
        formA = AForm()
        return render(request,r'app/form.html',{'formA':formA,'formB':formB})
    elif request.method == 'POST':
        formA = AForm(request.POST)
        formB = BForm(request.POST)
        formB.save()
        formA.save()
        return HttpResponseRedirect('/log')
这是我的表格:

# Descprition
class B(models.Model):
    id = models.AutoField(primary_key=True)
    description = models.CharField(max_length=50)

# Title
class A(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField('Name',max_length=20)
    desc = models.ForeignKey(B)

您的程序有多个错误,但主要问题是
desc
class a
中指向
class B
的外键,并且上面没有
null=True
,这意味着您永远不希望该字段为空。换句话说,
A
的每个实例都应该有一个外键
desc

如果您只是
save()
两个表单,
formA
尝试保存
A
的实例,而没有
desc
字段的值,因此会出现错误。您应该将
formB
创建的实例分配给
formA
创建的实例:

class BForm(forms.ModelForm):
    class Meta:
        model = B
        fields = ['description']

class AForm(forms.ModelForm):
    class Meta:
        model = A
        fields = ['name']

程序中的其他问题包括从未调用
form.is\u valid()
,具有冗余的
id
字段(django将为您创建一个)。我建议您在开始编写代码之前先阅读django教程。找出这样的错误会节省很多时间。

您的程序有多个错误,但主要问题是
desc
class a
中的外键,指向
class B
,并且上面没有
null=True
,这意味着您永远不希望该字段为空。换句话说,
A
的每个实例都应该有一个外键
desc

如果您只是
save()
两个表单,
formA
尝试保存
A
的实例,而没有
desc
字段的值,因此会出现错误。您应该将
formB
创建的实例分配给
formA
创建的实例:

class BForm(forms.ModelForm):
    class Meta:
        model = B
        fields = ['description']

class AForm(forms.ModelForm):
    class Meta:
        model = A
        fields = ['name']
程序中的其他问题包括从未调用
form.is\u valid()
,具有冗余的
id
字段(django将为您创建一个)。我建议您在开始编写代码之前先阅读django教程。这会节省很多时间,比如找出这样的错误