рдирдорд╕реНрддреЗ,
рдореЗрд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯреЗрдмрд▓ рд╣реИрдВ: -
class BaseTable(tables.Table):
select_column = tables.CheckBoxColumn(verbose_name='', empty_values=('NA',))
class Meta:
attrs = {'class' : 'cool_table'}
class EditableTable(BaseTable):
edit_column = EditIconColumn(verbose_name=_('Edit'))
def set_editable(self, flag):
if flag:
self.base_columns['edit_column'].visible = True
else:
self.base_columns['edit_column'].visible = False
class RoomTable(EditableTable):
number = tables.Column()
speciality = tables.Column()
photo = ImageViewColumn(accessor='room_type.photo')
рдЬрдм рдореИрдВ RoomTable
рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдЙрддреНрдкрдиреНрди <table>
рдореЗрдВ class
рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдореИрдВ рдЙрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рддрднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ рдЬрдм рдореИрдВ Meta
рд╡рд░реНрдЧ рдХреЛ BaseTable
рд╕реЗ RoomTable
рд▓реЗ рдЬрд╛рддрд╛ рд╣реВрдВ (рдпрд╛ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реВрдВ)ред
рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ рдпрд╛ рдореИрдВ рдЗрд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ?
рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдпрд╣ рдПрдХ рдмрдЧ рд╣реИред рдпрд╣ рдЕрдм рдореЗрд░реА рдЯреВрдбреВ рд╕реВрдЪреА рдореЗрдВ рд╕рдмрд╕реЗ рдКрдкрд░ рд╣реИред
рдзрдиреНрдпрд╡рд╛рджред
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рд▓рдЧрднрдЧ рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдореБрдЭреЗ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ Meta
рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рд▓рд┐рдП рдореИрдВ Django рд╢реИрд▓реА рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣рд╛ рдерд╛, рдЕрд░реНрдерд╛рдд
class Meta(Parent.Meta):
...
рддреЛ рдЕрдм рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдиреЗ рд▓рдЧрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛрдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЕрд╕рдВрдЧрдд рд░рд╣рд╛ рд╣реИ, django_tables2.Table
рдХреЗ рдкрд╣рд▓реЗ рдЙрдкрд╡рд░реНрдЧ рдореЗрдВ рдЖрдкрдХреЛ _don't_ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ class Meta(django_tables2.Tables):
, рд▓реЗрдХрд┐рди рдЖрдЧреЗ рдХрд┐рд╕реА рднреА рдЙрдкрд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдЖрдк _do_ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ django_tables2.Table.Meta
API рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдЙрдкрд╡рд░реНрдЧ рдореЗрдВ _starts_ рд╣реИред рдЗрд╕ рдкрд░ рдЖрдкрдХреА рдХреНрдпрд╛ рднрд╛рд╡рдирд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ Django рдХреЗ рдореЙрдбрд▓ рдХреА рдореЗрдЯрд╛ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдЗрд╕рдХреЗ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ? рдпрд╛ рдЖрдк Django рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЕрдиреБрднрд╡рд╣реАрди рдереЗ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдкрдиреЗ рдЕрднреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ _right_ рдХреНрдпрд╛ рд▓рдЧрд╛?
рдореИрдВрдиреЗ рдЕрднреА рдЖрдкрдХреЗ рдореВрд▓ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЙрдкрд╡рд░реНрдЧ рдореЗрдВ рдореЗрдЯрд╛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рднреА рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдк рдмрд╕ рдЙрдкрд╡рд░реНрдЧ рдФрд░ рдХреЙрд▓рдо рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рд╛рдВ рдореИрдВрдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ рд╕рд╣реА рд▓рдЧрд╛ред рд╡реИрд╕реЗ рднреА, рдореИрдВ рдореЗрдЯрд╛ рд╕рд╛рдорд╛рди рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдирдпрд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдмреНрд░рд╛рдбрд▓реА,
рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдкрд╕рдВрдж рд╣реИред рдореИрдВ рдЙрд╕реА рдореБрджреНрджреЗ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВ рдЬреИрд╕реЗ рдпрд╣рд╛рдВ рд╕реЗрдмрдЧреНрд░реЗрд╡, рдФрд░ рдЖрдкрдХреА рдЖрдЦрд┐рд░реА рдЯрд┐рдкреНрдкрдгреА рдореЗрд░реЗ рдорд╛рдорд▓реЗ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред
### Table Definitions ###
# parent class
import django_tables2 as tables
# generic parent class to handle table styling
class MyAppTable(tables.Table):
class Meta:
attrs = {'class': 'render-table'}
# subclass in a separate app
from myapp_helpers.tables import MyAppTable
from django_tables2.utils import A
import django_tables2 as tables
class ItemTable(MyAppTable):
address_1 = tables.Column()
address_2 = tables.Column()
address_3 = tables.Column()
city = tables.Column()
state = tables.Column()
zipcode = tables.Column()
# need this to fix a bug with the meta class not passing through to subclasses in django-tables2
class Meta(MyAppTable.Meta):
pass
## Views ##
# class based view in separate app
from django_tables2 import SingleTableView
# Parent class to make pagination the same across views
class MyAppListView(SingleTableView):
# default of 10 rows in every table on every page
table_pagination = {"per_page": 10 }
template_name = 'generic_list.html'
# subclass of view in local app
class ItemListView(MyAppListView):
model = Item
table_class = ItemTable
рдпрджрд┐ рд╡рд░реНрдЧ рдореЗрдЯрд╛ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ ItemTable рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдореВрд▓ рд╡рд░реНрдЧ рдореЗрдВ рд╕реЗрдЯ рдХреА рдЧрдИ рдореЗрдЯрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдирд╣реАрдВ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИрдВред рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рдРрдкреНрд╕ рдореЗрдВ рд╕рднреА рдЯреЗрдмрд▓реЛрдВ рдкрд░ рд╡рд╣реА рдПрдЯреНрд░реНрд╕ рднреЗрдЬреЗ рдЬрд╛рдПрдВ (рдЬреЛ рдЕрдВрддрддрдГ MyAppTable рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ)
ItemTable рдореЗрдВ рдЦрд╛рд▓реА рдореЗрдЯрд╛ рдХреНрд▓рд╛рд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЬреЛ рдкреИрд░реЗрдВрдЯ рдореЗрдЯрд╛ рдХреНрд▓рд╛рд╕ (MyAppTable) рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИ, рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди DRY рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрд╛рдо рдХрд░рддреА рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ рдХреЗрд╡рд▓ рджреЛ рд▓рд╛рдЗрдиреЗрдВ рд╣реЛрдВ рдФрд░ рдЕрднреА рднреА рдХреЗрд╡рд▓ CSS рдХреНрд▓рд╛рд╕ рдХреЛ рдПрдХ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдореЗрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИрдВред рд╕реНрдкреЙрдЯ рдореБрдЭреЗ рдЪрд╛рд╣рд┐рдПред рдХрд╛рдо рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВ! рдзрдиреНрдпрд╡рд╛рджред
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд╣рд╛рдВ рд╕реЗ рдЖ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдореИрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВрдиреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдкреИрдЪ рд▓рд┐рдЦрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг Django рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд░реБрдЦ рдпрд╣ рд╣реИ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ Django рдХреЗ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП Django + Python рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рд▓рд╛рдпрдХ рд╣реИ?
рд▓рдЧрднрдЧ рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ Django/рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВ рдЖрджрд░реНрд╢ рд╕реЗ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рджреЗрдиреЗ рдХреЗ рдпреЛрдЧреНрдп рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
a) рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рддрд░реАрдХреЗ рд╕реЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░реЗрдВ (рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕реЗ рдпрд╛рдж рдХрд░ рд╕рдХрддрд╛ рдерд╛)ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрддрдирд╛ рднрдпрд╛рдирдХ рдирд╣реАрдВ рд╣реИред
b) 'inherit_meta = False' рдЬреИрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЙрдк-рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдк-рд╡рд░реНрдЧ рдореЗрдЯрд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдВред рдЪреАрдЬреЛрдВ рдХреЛ Django рдорд╛рдирдХреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЧрд▓рдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдмрд╛рд░-рдмрд╛рд░ рдореЗрдЯрд╛ рдХреНрд▓рд╛рд╕ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдЬреИрд╕реЗ рдЕрдзрд┐рдХ рд╕рд╛рд╣рд╕реА/рдЖрд▓рд╕реА рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдПрдХрдорд╛рддреНрд░ рдореБрджреНрджрд╛ рдЬреЛ рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рд╡рд╣ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдмрдЧ рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдореМрдЬреВрдж рдбреЗрдЯрд╛), рдЖрджрд┐ред
рдЧ) рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрдирд╛рдПрдВред
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЬрдм рдореИрдВ рдЗрд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рд╕рд┐рд░ рдореЗрдВ рдкрд░рд┐рджреГрд╢реНрдп рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдЗрд╕ рддрдереНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЪрд░ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рд╡рд┐рд░рд╛рд╕рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЯреВрдЯрдирд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдордиреЗ рдореЗрдВ рдШрдВрдЯреЛрдВ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЯреВрдЯ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВред рдпрд╣ рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рдПрдЧрд╛ред
рд╕рдЪ рдХрд╣реВрдБ рддреЛ, рдпрд╣ рд╢рд╛рдпрдж рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдПрдЯрд┐рдкрд┐рдХрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрдВ рдХреЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдореЗрдЯрд╛ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ 'рдЧреЛрдЪрд╛' рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдиреЛрдЯ рджреЗрдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдП рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ), рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд░рддреЗ рд╣реИрдВ:
class Parent(tables.Table):
class Meta:
foo = 1
class Child(Parent):
class Meta(Parent.Meta):
bar = 2
Child.Meta
рдЕрдм foo = 1
_рдФрд░_ bar = 2
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рд╕рд╛рде рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдзрдиреНрдпрд╡рд╛рджред рдРрдкреНрдкрд▓рдЧреНрд░реЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд░рдЦрд╛ рдерд╛ред
рджреЛрд╣, рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБред
рдХрд╛рдордХрд╛рдЬ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░реЗрд╢рд╛рдиреА рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╡рд░реНрдЧ рдореЗрдВ рдХреБрдЫ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
class Parent(tables.Table):
class Meta:
attrs = {...}
class Child(Parent):
class Meta(Parent.Meta):
attrs = {'summary': 'A child table'}
NameError
рд╕рд╛рде name 'attrs' is not defined
рдЙрдард╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрджрд╕реВрд░рдд рд╣реИ:
class Child(Parent):
class Meta(Parent.Meta):
pass
Meta.attrs['summary'] = 'A child table'
рдХреНрдпрд╛ рдЗрд╕ рдмрдЧ рдХрд╛ рдЕрднреА рддрдХ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ? рдЙрдкрд░реЛрдХреНрдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред http://stackoverflow.com/questions/21787938/inherit-and-modify-a-meta-class
рдореБрдЭреЗ рджреЛ рдордирдорд╛рдиреА class Meta
рдПрдХ рд╕рд╛рде рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред attrs
рдХреБрдВрдЬреА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ, attrs
рд╕реЗ рдПрдХ рдХреБрдВрдЬреА рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, attrs
рдХреЛ рдПрдХ рдирдП рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ, рдЖрджрд┐ред рд╢рд╛рдпрдж рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдПрдХ рд╕рдордЭрджрд╛рд░ рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗред
рд╡реНрдпрд╡рд╣рд╛рд░ рд╡реИрд╕рд╛ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдХрд┐ рдЖрдк models.Model
рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЙрдкрд╡рд░реНрдЧ рдереЗред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЖрдкрдХреА рдмрд╛рдд рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рд╕рд┐рд░реНрдл рдкреИрд░реЗрдВрдЯ рдХреНрд▓рд╛рд╕ рд╕реЗ рдореЗрдЯрд╛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдиреЗ рдФрд░ рдХреБрдЫ рдХреЙрд▓рдо рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд SO рдкреНрд░рд╢реНрди рдореЗрдВ рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдереЛрдбрд╝рд╛ рдФрд░ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
@bradleyayers - рдЕрдЧрд░ рдореИрдВ рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдЖрдк рдореЗрдЯрд╛ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкреЛрд╕реНрдЯ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
@pydolan рд╣рд╛рдВ, рдХреБрдЫ рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рд▓рд┐рдП рднреА http://stackoverflow.com/questions/21787938/inherit-and-modify-a-meta-class рджреЗрдЦреЗрдВ ред