1
我如何獲得attr作爲被檢查列的名稱並且值被檢查的列的值?sqlalchemy使列遵循與規則的關係
models.py
class Dates(db.Model):
username=db.Column(db.String, primary_key=True)
apples = db.Column(db.DateTime)
oranges = db.Column(db.DateTime)
milk = db.Column(db.DateTime)
bananas = db.Column(db.DateTime)
beans = db.Column(db.DateTime)
def is_expired(self, date)
#I want attr to equal the column it is coming from
#example if I typed Dates.apples.is_expired('2017-01-01')
#I want attr to equal 'apples', that way Rules.rule brings back
# the rule # associated with apples
#I want value to be the date from Dates.apples
a=Rules.query.filter_by(name=attr).first()
if a.rule=='1':
value=datetime.datetime.strptime(value, '%Y-%m-%d')
date=datetime.datetime.strptime(date, '%Y-%m-%d')
for i in range(36):
value=add_one_month(value)
if date>value:
return True
else:
return False
elif a.rule=='2':
value=datetime.datetime.strptime(value, '%Y-%m-%d')
date=datetime.datetime.strptime(date, '%Y-%m-%d')
for i in range(12):
value=add_one_month(value)
if date>value:
return True
else:
return False
def __repr__(self): # pragma: no cover
return '<Mobility %r>' % (self.username)
class Rules(db.model)
rule=db.Column(db.Integer, primary_key=True)
name=db.Column(db.String(45))
def __repr__(self): # pragma: no cover
return '<Mobility %r>' % (self.name)
在另一個函數的調用的示例:
user=Dates.query.filter_by(username='bob').first()
user.apples='2017-02-11'
if user.apples.is_expired('2017-04-12'):
color=red
在這種情況下ATTR = '蘋果',值= '2017 = 02-11'
'is_expired'方法中沒有'attr'對象,也許它應該是'date'? –
你的''''對象的類型是'Query',而不是'Rules',可能你忘記了像'a = Rules.query.filter_by(name = attr).first()'添加'.first() ? –
還有'value'對象來自哪裏(再次在'is_expired'方法內)? –