How to sort by calculated field?

user836968

How can I sort or return a list of my projects based upon the sum of driver.factor times project_driver.value for each driver per project? So there should be an additional calculated/dynamic field/column "rating" in project.

For example:

project1.rating = (10.0 * 0.7) + (40.0 * 0.2) + (20.0 * 0.1)

Thank you

models:

class ProjectDriver(db.Model):
    project_id = db.Column(db.Integer, db.ForeignKey('project.id'),
        primary_key=True)
    driver_id = db.Column(db.Integer, db.ForeignKey('driver.id'),
        primary_key=True)
    value = db.Column(db.Float)
    driver = db.relationship('Driver', backref=db.backref('project_drivers'))

    def __init__(self, value, driver):
        self.value = value
        self.driver = driver

    def __repr__(self):
        return '<ProjectDriver %r, %r>' % (self.project_id, self.driver_id)

class Project(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(120))
    project_drivers = db.relationship('ProjectDriver',
        backref=db.backref('projects'))

    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return '<Project %r>' % self.name

class Driver(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(120))
    factor = db.Column(db.Float)

    def __init__(self, name, factor):
        self.name = name
        self.factor = factor

    def __repr__(self):
        return '<Driver %r>' % self.name

views:

@app.route('/projects')
def list_view():
    projects = Project.query.all()
    return render_template('list_view.html', projects=projects)

sqlite:

sqlite> select * from project;
id          name      
----------  ----------
1           Project1  
2           Project2  
3           Project3  
sqlite> select * from driver;
id          name        factor    
----------  ----------  ----------
1           Driver1     0.7       
2           Driver2     0.2       
3           Driver3     0.1       
sqlite> select * from project_driver;
project_id  driver_id   value     
----------  ----------  ----------
1           1           10.0      
1           2           40.0      
1           3           20.0      
2           1           20.0      
2           2           10.0      
2           3           30.0      
3           1           50.0      
3           2           20.0      
3           3           10.0
djangoat

Take a look at hybrid properties. In your project driver class something like:

@hybrid_property
def rating(self):
    return self.factor * self.driver.factor

Then do the addition calculation in projects

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

How to sort an Elasticsearch query result by a nested calculated field

How to sort by a calculated value in Activerecord?

how to use parameter with calculated field

Elasticsearch - How to index a calculated field?

How to Cast a calculated field multiplied with a money field?

How to create a boolean calculated field in Amazon QuickSight?

How to display calculated field in footer in jqgrid

How to use DateDiff in calculated field in access

How to add a simple calculated field to a google form?

How to add a calculated field to a Django model

How to join two tables based on a calculated field?

How filter on calculated field (append) in Eloquent Laravel?

How can I reference a calculated field in a subquery?

How to return decimal numbers in sqlite calculated field

How to get name month in calculated field xtrareport

How to use order by on a calculated field in SQL?

How to get a calculated field in SELECT comparing with SYSDATE

How to make a validation on a calculated field in laravel 5.5

How to sort by a number field?

How to sort by custom field?

How to sort on a field in indexedEmbedded

How to sort on a field numerically

How to proper calculated one input field and many output field summation?

SQL - Calculated field base on calculated field?

PostgreSQL - How is the cost of Sort Node in the Query Plan calculated?

How do I sort Django models by sum of calculated property?

Mongo sort on a calculated condition

sort products by calculated factor

AngularJS - how to sync result of calculated input field to a scope variable

TOP Ranking

HotTag

Archive