Adventure-Knorrig
Adventure-Knorrig

Reputation: 328

How to use timedelta in (Flask-)SQLAlchemy?

I would like to create a column called "date_expiration" in my models.py that takes the current time and adds four days to it. The following code results in an unsupported operand type(s) for +: 'builtin_function_or_method' and 'datetime.timedelta' because I'm not expliciltly calling the utcnow with parenthesis().

Here is my class with the above error:

class Submission(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    uri = db.Column(db.String(100), nullable=False)
    uri_name = db.Column(db.String(60), nullable=False)
    reviewer = db.Column(db.String(50), nullable=False)
    url = db.Column(db.String(200), nullable=False)
    date_submission = db.Column(db.DateTime, nullable=False, 
        default=datetime.datetime.utcnow)
    date_expiration = db.Column(db.DateTime, nullable=False, default= 
        (datetime.datetime.utcnow + datetime.timedelta(days=4)))
    submission_description = db.Column(db.Text, nullable=False)

What is the proper way to set the date_expiration column?

Upvotes: 0

Views: 1314

Answers (1)

Fasil K
Fasil K

Reputation: 493

Try this code for your date_exipiration column, this would work:

date_expiration = db.Column(db.DateTime, nullable=False, default= (datetime.datetime.today() + datetime.timedelta(days=4)))

Use datetime.datetime.today() instead of datetime.datetime.utcnow. Coz, both are different types, that why you get error.

Upvotes: 2

Related Questions