我正在使用 Flask 和 Flask-SQLalchemy 以及 Flask-Login 編寫一個(gè) RESTful api。我有一個(gè)Users初始化的模型,如下所示:class Users(UserMixin, db.Model): __tablename__ = "users" # STATIC Standard required info id = db.Column("id", db.Integer, primary_key = True) public_id = db.Column("public_id", db.String(50), unique = True) email = db.Column("email", db.String(50), unique = True) username = db.Column("username", db.String(20), unique = True) password = db.Column("password", db.String(20)) # DYNAMIC Standard required info lat = db.Column("lat", db.Float) lon = db.Column("lon", db.Float)表中還有其他元素,但緯度和經(jīng)度最相關(guān)。我有一個(gè)方法distanceMath()可以接收當(dāng)前登錄用戶的經(jīng)緯度,以及表格中的經(jīng)緯度來計(jì)算它們之間的距離。但我無法弄清楚如何在以下調(diào)用期間訪問表值distanceMath而不會(huì)收到語法錯(cuò)誤:lat1 = current_user.latlon1 = current_user.lonusers = Users.query.filter(distanceMath(lat1, Users.lat, lon1, Users.lon)==1) output = [] for user in users: data = {} data["username"] = user.username output.append(data) return str(output)以防萬一,distanceMath方法如下:# Haversine Distancedef distanceMath(lat1, lat2, lon1, lon2): distance = math.acos(math.sin(math.radians(lat1))*math.sin(math.radians(lat2))) + math.cos(math.radians(lat1))*math.cos(math.radians(lat2))*math.cos(math.radians(lon1)-math.radians(lon2)) return distance錯(cuò)誤的一個(gè)例子是:TypeError: must be real number, not InstrumentedAttribute在我的理解中,這基本上是在說,User.lat并且User.lon不指浮點(diǎn)數(shù)甚至數(shù)字,而是指表的屬性。我的問題是如何實(shí)際使用 lat 和 lon 等于(在數(shù)據(jù)庫(kù)中它們分別等于 37.7 和 -122.4)。
添加回答
舉報(bào)
0/150
提交
取消