मेरे पास Order एक created_on फ़ील्ड वाला ऑब्जेक्ट है।

created_on = db.Column(db.DateTime, default=datetime.utcnow())

अब मैं number_of_order_a_day फ़ंक्शन का उपयोग करके एक दिन में बनाए गए ऑर्डर की संख्या प्राप्त करने का प्रयास कर रहा था:

@classmethod
def number_of_order_a_day(cls):
    return cls.query.filter(cls.created_on.like('%{}'.format(date.today()))).count()

लेकिन फ़ंक्शन 0 लौटाता है।

यह मेरी OrderModel कक्षा है:

import sqlite3
from datetime import datetime, date
from app import db



class OrderModel(db.Model):
    __tablename__ = "orders"

    id = db.Column(db.Integer, primary_key = True)
    order_number = db.Column(db.String(80))
    created_on = db.Column(db.DateTime, default=datetime.utcnow())


    def __init__(self, order_number, created_on):
        self.order_number = order_number
        self.created_on = created_on


    @classmethod
    def find_by_id(cls, id):
        return cls.query.filter_by(id = id).first() 

    @classmethod
    def find_by_order_number(cls, order_number):
        return cls.query.filter_by(order_number = order_number).first() 

    @classmethod
    def number_of_order_a_day(cls):
        return cls.query.filter(cls.created_on.like('{}'.format(date.today()))).count()


    def save_to_db(self):
        db.session.add(self)
        db.session.commit()

    def delete_from_db(self):
        db.session.delete(self)
        db.session.commit()
-1
Reactive_learner 15 अप्रैल 2020, 18:29

1 उत्तर

सबसे बढ़िया उत्तर

समाधान निम्नलिखित की तरह था func को sqlalchemy से आयात करना:

from sqlalchemy import func

फिर number_of_order_a_day फ़ंक्शन

@classmethod
def number_of_order_a_day(cls):
    return cls.query.filter(func.DATE(cls.created_on) == datetime.utcnow().date()).all()

count() के बजाय मैं तारीख के अनुसार सभी मेल खाने वाले ऑर्डर एक सूची के रूप में लौटा रहा हूं। फिर सूची के लिए len() फ़ंक्शन का उपयोग करके संसाधन पृष्ठ को number_of_order_a_day प्राप्त करने के क्रम में:

number_of_order_a_day = len(OrderModel.number_of_order_a_day()) 

मैंने count() को थोड़ा धीमा पाया है।

1
Reactive_learner 22 अप्रैल 2020, 17:07