flask-mongoengine AttributeError: 'BaseQuerySet' object has no attribute 'service_name'
flask-mongoengine AttributeError: 'BaseQuerySet' object has no attribute 'service_name'
我的代码:
models.py
from flask_mongoengine import MongoEngine, QuerySet
import datetime
db = MongoEngine()
class Service(db.Document):
service_name = db.StringField(max_length=50, required=True)
date_created = db.DateTimeField(default=datetime.datetime.utcnow)
meta = {
'ordering': ['-date_created'], 'strict' : False
}
class Organisation(db.Document):
org_name = db.StringField(max_length=50, required = True)
service = db.ReferenceField(Service, reverse_delete_rule='CASCADE', required=True)
date_created = db.DateTimeField(default=datetime.datetime.utcnow)
meta = {
'ordering': ['-date_created'], 'strict' : False
}
API(routes.py)
@service.route('/services/<name>', methods=['GET'])
def get_one_service(name):
s = Service.objects(service_name=name)
if s:
output = {'service_name' : s.service_name}
else:
output = "No such name"
return jsonify({'result' : output})
get_one_service()
方法returns出现上述错误。根据文档,这是正确的。
在您的 get_one_service
函数中,s
不是 Service
实例,而是一个查询集(文档中的 this example 可能更清楚)
您可以通过以下方式访问 Service
的单个实例:
try
s = Service.objects.get(service_name=name)
output = {'service_name' : s.service_name}
except Service.DoesNotExist:
output = 'no such name'
但是,由于 service_name
字段在您的模型中不是唯一的,如果有两个文档具有相同的 service_name
.
,您可能会遇到 MultipleObjectsReturned
异常
或者,您可以查看 s
是否包含多个 Service
并相应地采取行动。
我的代码:
models.py
from flask_mongoengine import MongoEngine, QuerySet
import datetime
db = MongoEngine()
class Service(db.Document):
service_name = db.StringField(max_length=50, required=True)
date_created = db.DateTimeField(default=datetime.datetime.utcnow)
meta = {
'ordering': ['-date_created'], 'strict' : False
}
class Organisation(db.Document):
org_name = db.StringField(max_length=50, required = True)
service = db.ReferenceField(Service, reverse_delete_rule='CASCADE', required=True)
date_created = db.DateTimeField(default=datetime.datetime.utcnow)
meta = {
'ordering': ['-date_created'], 'strict' : False
}
API(routes.py)
@service.route('/services/<name>', methods=['GET'])
def get_one_service(name):
s = Service.objects(service_name=name)
if s:
output = {'service_name' : s.service_name}
else:
output = "No such name"
return jsonify({'result' : output})
get_one_service()
方法returns出现上述错误。根据文档,这是正确的。
在您的 get_one_service
函数中,s
不是 Service
实例,而是一个查询集(文档中的 this example 可能更清楚)
您可以通过以下方式访问 Service
的单个实例:
try
s = Service.objects.get(service_name=name)
output = {'service_name' : s.service_name}
except Service.DoesNotExist:
output = 'no such name'
但是,由于 service_name
字段在您的模型中不是唯一的,如果有两个文档具有相同的 service_name
.
MultipleObjectsReturned
异常
或者,您可以查看 s
是否包含多个 Service
并相应地采取行动。