Api 棉花糖:我如何为我的模式编码以接受表中不包含但用于筛选的字段?

Api 棉花糖:我如何为我的模式编码以接受表中不包含但用于筛选的字段?,api,flask-sqlalchemy,flask-restful,marshmallow,Api,Flask Sqlalchemy,Flask Restful,Marshmallow,我想制作一个API,它接受两个日期参数,并在数据库表中返回所有结果。我不希望这些日期存储在任何地方,因此无法将它们定义为列。我的表有三列:id(int)、answers(json)、datestamp(DateTime)。我想在API请求中传入“start_date”和“end_date”变量,并获得该期间的所有答案和ID。我从字符串的日期转换很好,但我不断收到{“_schema”:[“Invalid input type.]}响应。即使这些字段在表中不存在,也可以传入这些字段吗?我需要像定义模

我想制作一个API,它接受两个日期参数,并在数据库表中返回所有结果。我不希望这些日期存储在任何地方,因此无法将它们定义为列。我的表有三列:id(int)、answers(json)、datestamp(DateTime)。我想在API请求中传入“start_date”和“end_date”变量,并获得该期间的所有答案和ID。我从字符串的日期转换很好,但我不断收到{“_schema”:[“Invalid input type.]}响应。即使这些字段在表中不存在,也可以传入这些字段吗?我需要像定义模型中的列一样定义它们吗?如果是,而不是列(…),它将是什么

我尝试了“additional_properties=fields.Raw()”,但仍然出现无效输入类型错误。我已经使用了模式,但似乎遗漏了一些东西

模式 模型 输入导入列表中的

从日期时间导入时间增量
从数据库导入数据库
类CBulkModel(数据库模型):
__tablename=“测试发布日期”
datestamp=db.Column(db.DateTime,null=False)
id=db.Column(db.biginger,nullable=True,unique=True,primary\u key=True)
answers=db.Column(db.JSON,nullable=True)
@类方法
def find_all(cls、开始日期、结束日期):#->列表[“CBulkModel”]:
返回cls.query.filter(数据库和(开始日期>=cls.datestamp,结束日期

{“_schema”:[“无效输入类型”。]}而不是当时的调查。

我想我明白了。顺便说一句,为了使最终解决方案能够工作,还有更多的代码更改,但是输入问题通过不传递JSON得到了解决。如果不通过模式传入JSON,则可以加载任何属性并将其用作过滤器

尝试添加未知=包括。。希望这有助于

enter code herefrom ma import ma # marshmallow
from models.c_bulk import CBulkModel
from flask_restful import fields
class CBulkSchema(ma.ModelSchema):
    class Meta:
        additional properties = fields.Raw()
        model = ClaraBulkModel
        dump_only = ("id", "answers", "datestamp")
        unknown = INCLUDE
from typing import List
from datetime import timedelta
from db import db


class CBulkModel(db.Model):
    __tablename__ = "test_post_date"
    datestamp = db.Column(db.DateTime, nullable=False)
    id = db.Column(db.BigInteger, nullable=True, unique=True, primary_key=True)
    answers = db.Column(db.JSON, nullable=True)
    @classmethod
    def find_all(cls, start_date, end_date): # -> List["CBulkModel"]:
        return cls.query.filter(db.and_(start_date >= cls.datestamp, end_date < cls.datestamp))
enter code herefrom ma import ma # marshmallow
from models.c_bulk import CBulkModel
from flask_restful import fields
class CBulkSchema(ma.ModelSchema):
    class Meta:
        additional properties = fields.Raw()
        model = ClaraBulkModel
        dump_only = ("id", "answers", "datestamp")
        unknown = INCLUDE