@@ -260,3 +260,39 @@ class Model(db.Model):
260
260
select_col = db .Column (name = db .quoted_name ('select' , False ))
261
261
assert select_col .name == 'select'
262
262
assert not select_col .name .quote
263
+
264
+
265
+ async def test_overwrite_declared_table_name ():
266
+ class MyTableNameMixin :
267
+ @db .declared_attr
268
+ def __tablename__ (cls ):
269
+ return cls .__name__ .lower ()
270
+
271
+ class MyTableWithoutName (MyTableNameMixin , db .Model ):
272
+ id = db .Column (db .Integer , primary_key = True )
273
+
274
+ class MyTableWithName (MyTableNameMixin , db .Model ):
275
+ __tablename__ = 'manually_overwritten_name'
276
+ id = db .Column (db .Integer , primary_key = True )
277
+
278
+ assert MyTableWithoutName .__table__ .name == 'mytablewithoutname'
279
+ assert MyTableWithName .__table__ .name == 'manually_overwritten_name'
280
+
281
+
282
+ async def test_multiple_inheritance_overwrite_declared_table_name ():
283
+ class MyTableNameMixin :
284
+ @db .declared_attr
285
+ def __tablename__ (cls ):
286
+ return cls .__name__ .lower ()
287
+
288
+ class AnotherTableNameMixin :
289
+ __tablename__ = "static_table_name"
290
+
291
+ class MyTableWithoutName (AnotherTableNameMixin , MyTableNameMixin , db .Model ):
292
+ id = db .Column (db .Integer , primary_key = True )
293
+
294
+ class MyOtherTableWithoutName (MyTableNameMixin , AnotherTableNameMixin , db .Model ):
295
+ id = db .Column (db .Integer , primary_key = True )
296
+
297
+ assert MyTableWithoutName .__table__ .name == 'static_table_name'
298
+ assert MyOtherTableWithoutName .__table__ .name == 'myothertablewithoutname'
0 commit comments