python - Flask 模型 .save() 引发 TypeError:_validate() 缺少 1 个必需的位置参数:'value'
问题描述
我尝试将列表添加到属性,但是当我尝试保存数据库时,它会引发以下异常。我的代码有问题吗?我之前修改了模型以添加新属性 saved_jadwal_ids。我认为它没有引起任何问题,因为我在执行 jadwal.save() 之前尝试为其设置值并且我可以打印该值。我真的需要进行迁移吗?谢谢你。
jadwal = Jadwal.objects(id=jadwal_id).first()
eventIds = []
# courses = data['jadwals']
courses = getCourses()
for course in courses:
id = insert_event(calendar, course)
eventIds.append(id)
jadwal.saved_jadwal_ids = eventIds
jadwal.save()
贾德瓦尔.py:
class Jadwal(Document):
user_id = ReferenceField('User')
jadwals = ListField(EmbeddedDocumentField(JadwalData))
created_at = DateTimeField(default=datetime.now)
saved_jadwal_ids = ListField(StringField)
错误:
Traceback (most recent call last):
File "c:\users\anisha\appdata\local\programs\python\python37\lib\site-packages\flask\app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "c:\users\anisha\appdata\local\programs\python\python37\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "c:\users\anisha\appdata\local\programs\python\python37\lib\site-packages\flask_cors\extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "c:\users\anisha\appdata\local\programs\python\python37\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "c:\users\anisha\appdata\local\programs\python\python37\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "c:\users\anisha\appdata\local\programs\python\python37\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "c:\users\anisha\appdata\local\programs\python\python37\lib\site-packages\flask\app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\Anisha\RISTEK BISMILLAH\sunjadv2-server\app.py", line 631, in add_jadwal_to_calendar
jadwal.save()
File "c:\users\anisha\appdata\local\programs\python\python37\lib\site-packages\mongoengine\document.py", line 362, in save
self.validate(clean=clean)
File "c:\users\anisha\appdata\local\programs\python\python37\lib\site-packages\mongoengine\base\document.py", line 377, in validate
field._validate(value)
File "c:\users\anisha\appdata\local\programs\python\python37\lib\site-packages\mongoengine\base\fields.py", line 234, in _validate
self.validate(value, **kwargs)
File "c:\users\anisha\appdata\local\programs\python\python37\lib\site-packages\mongoengine\fields.py", line 857, in validate
super(ListField, self).validate(value)
File "c:\users\anisha\appdata\local\programs\python\python37\lib\site-packages\mongoengine\base\fields.py", line 431, in validate
self.field._validate(v)
TypeError: _validate() missing 1 required positional argument: 'value'
解决方案
尝试更换:
saved_jadwal_ids = ListField(StringField)
和:
saved_jadwal_ids = ListField(StringField())
我可以使用此代码段重现并修复错误:
from mongoengine import Document, StringField, ListField
class Example(Document):
meta = {'collection': 'examples'}
saved_jadwal_ids = ListField(StringField) # should be StringField()
e = Example()
e.saved_jadwal_ids = ['not','ok']
e.save()
TypeError: _validate() missing 1 required positional argument: 'value'
推荐阅读
- javascript - 如何阅读 NPM 依赖项的版本控制
- flutter - 如何在切换按钮打开时更改卡片颜色
- sql - SQL 中可能会出现奇怪的会话范围反转
- javascript - 如何使用具有 3 个输入(月、日、年)的 react-hook-form 创建日期字段?
- java - 我们如何在 android 11 中获取所有图像?
- python - 当语言只包含一种语言时,我无法得到正确的答案以打印出来:“莎拉最喜欢的语言是:C”
- typescript - vue/ 使用 tsx 时没有导出成员 'toRefs'
- java - Maven:为什么在父pom中声明的依赖项没有被子pom继承?
- javascript - 如何在加载之前可靠地删除脚本标签?
- java - 在 AnyLogic 中为代理创建文本文件时出现 NullPointerExection 错误