django - 将表单数据保存到 models.ForeignKey 字段
问题描述
我正在开发一个存储书籍详细信息的网络应用程序。我创建了一个表单页面来在数据库中添加书籍的详细信息。当我提交该表格时,它给了我错误。
valueError: Cannot assign "'scifi'": "Book.genre" must be a "Genre" instance.
有什么方法可以将提交表单中的数据分配给 Book 类中的 models.ForeignKey(Genre,on_delete=models.CASCADE,null=True) 。
模型.py
class Genre(models.Model):
title=models.CharField(max_length=100)
class Meta:
verbose_name_plural='2. Genre'
def __str__(self):
return self.title
class Language(models.Model):
title=models.CharField(max_length=100)
class Meta:
verbose_name_plural='3. Language'
def __str__(self):
return self.title
class Book(models.Model):
image=models.ImageField(upload_to="book_imgs/",null=True)
title=models.CharField(max_length=200,null=True)
Author=models.CharField(max_length=200,null=True)
genre=models.ForeignKey(Genre,on_delete=models.CASCADE,null=True)
language=models.ForeignKey(Language,on_delete=models.CASCADE,null=True)
class Meta:
verbose_name_plural='1. Book'
def __str__(self):
return self.title
def image_tag(self):
return mark_safe('<img src="%s" width="50" height="50" />' % (self.image.url))
视图.py
def add_books(request):
if request.method =="POST":
bookname= request.POST['bookname']
author= request.POST['author']
genre= request.POST['genre']
language= request.POST['language']
instance = Book(title=bookname,Author=author,genre=genre,language=language)
instance.save()
return render(request,'Add_books.html')
解决方案
你做错了什么她是
genre= request.POST['genre']
上面的代码给你一个字符串值,而
instance = Book(title=bookname,Author=author,genre=genre,language=language)
该类型接受一个模型对象
改为这样做
genre = Genre.objects.get(title = reqeust.POST['genre'])
接着
instance=Book(title=bookname,Author=author,genre=genre,language=language)
推荐阅读
- typescript - TypeScript 3.5:如何使用索引器符号更新对象属性?
- javascript - 使用jQuery选择一个不存在的ID
- php - Rocket Chat rooms.upload PHP Curl 不工作
- javascript - ajax请求formik反应后更改值
- sql - 插入表时字符串或二进制数据会被截断错误
- javascript - Print Popup 在 pos js 中显示空白屏幕
- clickhouse - 大表查询是clickhouse进程关闭
- reporting-services - 如何让我的参数在 ssrs 报告的预览模式下展开?
- python - 如何用python绘制相关矩阵?就像在 R 库中一样(性能分析)
- javascript - 滚动部分时用于自定义转换的任何 fullpagejs 代码?