examples - sqla: filter on hybrid property

parent 3e558465
...@@ -4,6 +4,7 @@ from flask import Flask, Markup ...@@ -4,6 +4,7 @@ from flask import Flask, Markup
from flask_sqlalchemy import SQLAlchemy from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.ext.hybrid import hybrid_property from sqlalchemy.ext.hybrid import hybrid_property
from sqlalchemy.orm import composite from sqlalchemy.orm import composite
from sqlalchemy import sql, cast
import uuid import uuid
import random import random
import string import string
...@@ -85,9 +86,13 @@ class User(db.Model): ...@@ -85,9 +86,13 @@ class User(db.Model):
def phone_number(self): def phone_number(self):
if self.dialling_code and self.local_phone_number: if self.dialling_code and self.local_phone_number:
number = str(self.local_phone_number) number = str(self.local_phone_number)
return "+{} ({}){} {} {}".format(self.dialling_code, number[0], number[1:3], number[3:6], number[6::]) return "+{} ({}) {} {} {}".format(self.dialling_code, number[0], number[1:3], number[3:6], number[6::])
return return
@phone_number.expression
def phone_number(cls):
return sql.operators.ColumnOperators.concat(cast(cls.dialling_code, db.String), cls.local_phone_number)
def __str__(self): def __str__(self):
return "{}, {}".format(self.last_name, self.first_name) return "{}, {}".format(self.last_name, self.first_name)
...@@ -233,6 +238,7 @@ class UserAdmin(sqla.ModelView): ...@@ -233,6 +238,7 @@ class UserAdmin(sqla.ModelView):
FilterEqual(column=User.last_name, name='Last Name'), FilterEqual(column=User.last_name, name='Last Name'),
FilterLastNameBrown(column=User.last_name, name='Last Name', FilterLastNameBrown(column=User.last_name, name='Last Name',
options=(('1', 'Yes'), ('0', 'No'))), options=(('1', 'Yes'), ('0', 'No'))),
'phone_number',
'email', 'email',
'ip_address', 'ip_address',
'currency', 'currency',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment