A simple trick to let a function be called with exactly ONE argument from a Django template, by passing it via an attribute. Example:
class SearchResult(object):
@template_callable
def highlighted(self, field):
return self._xappy_result.highlight(field)
result = SearchResult()
result.highlighted.title
{{ result.highlighted.title }}
1 2 3 4 5 6 7 8 9 10 11 12 13 | def template_callable(func):
class GetAttrCaller(object):
def __init__(self, instance):
self.instance = instance
def __getattr__(self, name):
return func(self.instance, name)
# Would cause Django to think this is a method, even through templates
#def __call__(self, *args, **kwargs):
# return func(self, *args, **kwargs)
class TemplateCallableDescriptor(object):
def __get__(self, instance, klass):
return GetAttrCaller(instance)
return TemplateCallableDescriptor()
|
More like this
- LazyPrimaryKeyRelatedField by LLyaudet 1 week ago
- CacheInDictManager by LLyaudet 1 week ago
- MYSQL Full Text Expression by Bidaya0 1 week, 1 day ago
- Custom model manager chaining (Python 3 re-write) by Spotted1270 2 weeks ago
- Django Standard API Response Middleware for DRF for modern frontend easy usage by Denactive 1 month ago
Comments
HI,
Iam new to python and django.
Here i need to enable radio buttons on home screen depending on data stored in model database. How we can do this to get data in database and enabling radio buttons on same screen?
For example i have to choose role which is not filled already.
Plz help me.
my mail [email protected]
Thanks in advance by vamsi
#
Please login first before commenting.