繁体   English   中英

Python Mongoengine 必需=真正的验证规则不起作用

[英]Python Mongoengine Required=True validation rule not working

class Song(db.Document):
    # defineing varables 
    Id = db.IntField(min_value = 0, unique=True, Required=True)
    songName = db.StringField(unique=True,max_length = 100, Required = True)

    def json(self):
        song_dict = {
                        "Id": self.Id,
                        "songName": self.songName
                      }
        return json.dumps(song_dict)
    
    meta = {
             "indexes": ["Id"],
             "ordering" :["-date_created"]
             }

## Define route to create database and added the data to the database.
@app.route('/audiometa', methods=['POST'])
def create_audiometa():
    #Datetime=datetime.now()
    try:
        _json = request.json
        if _json['audioFileType'] in audiotypeList:
            audioFileType =_json['audioFileType']
            try:
                record=eval(audioFileType)(**_json['audioFileMetadata'])
                record.save() 
                return Response(response = json.dumps({"message": "Record Added Succesfully"}),status=200)
            except Exception as e:
                return Response(response = json.dumps({"Error" : "Error \n %s" % (e)}),status=400)
        else:
             return Response(response = json.dumps({"message": ""}),status=400)
    except Exception as e:
        return Response(response = json.dumps({"Error" : "Error \n %s" % (e)}),status=400)

我正在定义将 JSON 文件作为数据发布到数据库的路线。 将 mongoengine 库与 python 一起用于数据库请求。

我已经根据需要定义了所有字段,但是当我从 postman 发布 JSON 时,它成功上传到数据库,尽管缺少几个字段。 喜欢,

像,正确的要求就是这个......

{"audioFileType": "Song", "audioFileMetadata": {"Id":"12123232003", 
                                                "songName":"I wanna grow old with you."
                                                 }
  }

但它也接受缺少歌曲名的地方......

{"audioFileType": "Song", "audioFileMetadata": {"Id":"12123232003"
                                                 }
  }

有什么我错过的请告诉我...这是我在 StackOverflow 上的第一篇文章,所以如果我犯了任何错误,请告诉我...

谢谢。

我相信这是您的字段定义中的一个简单错字,它是required=True (小写)而不是Required=True

附加说明,如果您没有将属性设置为“id”作为名称,MongoEngine 会添加一个字段id=ObjectIdField(primary_key=True) ,因此在您的情况下,您的实例实际上同时具有idId

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM