【问题标题】:Setting default value to Null in mongoengine Model python在mongoengine Model python中将默认值设置为Null
【发布时间】:2021-11-01 19:37:59
【问题描述】:
from pymodm import connect, fields, MongoModel, EmbeddedMongoModel
from pymongo import IndexModel, ASCENDING, TEXT,client_session
import arrow
from sqlalchemy.log import echo_property
from sqlalchemy.orm import session, sessionmaker
# from .models import *
from scrapy.utils.project import get_project_settings
import arrow
from time import sleep
from sqlalchemy.sql.expression import null

from sqlalchemy.sql.schema import PrimaryKeyConstraint


def db_connect():
    """
    Performs database connection using database settings from settings.py.
    Returns sqlalchemy engine instance
    """
    engine = connect("mongodb://localhost:27017/abcd")
    return engine

now = arrow.get(arrow.now('America/New_York')).datetime

class Live_pr(MongoModel):
    uni_identifier = fields.CharField(required=True,primary_key=True)
    symbol = fields.ListField(required=True)
    #...........
    #..........
    price_dollar = fields.FloatField(blank=True, null=True, default=None) #I want set default Null for this field
    is_new = fields.IntegerField(default=1)
    scrape_timestamp = fields.DateTimeField(default=now)

    class Meta:
        cascade = True

db_connect()

#.....
#scrapy pipeline code
#....

def process_item(self, item, spider):
    prs = Live_pr()

    prs.uni_identifier = item["uni_identifier"]
    prs.symbol = item["symbols"]
    if item["price"]:
        prs.price_dollar = item["price"]
    prs.save()

我只想知道是否有办法在 mongoengine 模型中将默认设置为 Null。“default=None”不起作用。它只会删除整个字段。并且设置“null=true”会抛出这种类型的错误:

文件 "/home/*******/.local/lib/python3.9/site-packages/pymodm/fields.py", 第 89 行,在 init 中 super(CharField, self).init(verbose_name=verbose_name, TypeError: init() got an unexpected keyword argument 'null'

【问题讨论】:

    标签: python-3.x pymongo mongoengine


    【解决方案1】:

    您可以像这样设置默认值:

    field2 = fields.CharField(blank=True, null=True, default=None)
    

    【讨论】:

    • 嗯让我试试
    • 我只是更新答案。你能试试这个吗?
    • 不,同样的错误。我突然开始讨厌python了
    • 由于某种原因仅传递空参数时抛出错误
    • 你可以试试default=""吗?如果成功了,我们可以稍后讨论前端问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2016-12-28
    • 2015-08-09
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多