Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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 InlineFormFactory列';图书编号';不能为空_Python_Django - Fatal编程技术网

Python InlineFormFactory列';图书编号';不能为空

Python InlineFormFactory列';图书编号';不能为空,python,django,Python,Django,好的,我正在做测试。我想上传一些pdf文件。所以我遵循formset教程 但似乎有一个错误即将来临,那就是 (1048, "Column 'book_id' cannot be null") 这是模型类 class Book(models.Model): author = models.ForeignKey(Author)#, null=True, blank=True) album_name = models.CharField(max_length=100)

好的,我正在做测试。我想上传一些pdf文件。所以我遵循formset教程

但似乎有一个错误即将来临,那就是

(1048, "Column 'book_id' cannot be null") 
这是模型类

class Book(models.Model):
     author = models.ForeignKey(Author)#,  null=True, blank=True)
     album_name = models.CharField(max_length=100)
     created_on = models.DateTimeField(default=datetime.datetime.now)

class Book_File(models.Model):
     filefile = models.FileField(upload_to=content_file_name)
     book = models.ForeignKey(Book)#,  null=True, blank=True)
模型形式如下所示

class BookForm(ModelForm):
    class Meta:
        model = Book_File
        fields = ['filefile', 'book']

BookFormSet = inlineformset_factory(Book, Book_File, extra=3, can_delete=False)
book = Book.objects.get(book_name=u'New')
formset = AlbumFormSet(instance=book)
如果我按照django教程中的建议将book_id放入viewalbum,则会出现错误

def viewalbum(request,book_id):
    book = Book.objects.get(pk=book_id)
    if request.method == 'POST':
        formset = BookFormSet(request.POST, request.FILES, instance=book)
        if formset.is_valid():
            for data in formset.cleaned_data:
                Book_File.objects.create(filefile=data['filefile'])
            return HttpResponseRedirect(reverse('first.views.viewalbum'))
    else:
        formset = BookFormSet(instance=book)
    return render_to_response('test.html',{'formset': formset})
告诉我遗漏了什么?

您正在将数据另存为

if formset.is_valid():
    for data in formset.cleaned_data:
        Book_File.objects.create(filefile=data['filefile'])
这里您正在创建
Book\u文件
对象,但没有指定
Book
实例。你应该这样做

if formset.is_valid():
    for data in formset.cleaned_data:
        Book_File.objects.create(filefile=data['filefile'], book=book)
或者干脆就这么做

if formset.is_valid():
    formset.save()

好viewalbum()正好接受2个参数(给定1个)@gello,我不知道你指的是什么。