Skip to content

Commit 8692ca5

Browse files
committed
Merge branch 'master' of github.com:telerytech/piccolo
2 parents 29544f4 + f9561d3 commit 8692ca5

File tree

2 files changed

+39
-22
lines changed

2 files changed

+39
-22
lines changed

piccolo/table.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1372,6 +1372,15 @@ def _table_str(
13721372
columns.append(
13731373
f"{col._meta.name} = {col.__class__.__name__}({params_string})"
13741374
)
1375+
1376+
for m2m_relationship in cls._meta.m2m_relationships:
1377+
joining_table_name = (
1378+
m2m_relationship._meta.resolved_joining_table.__name__
1379+
)
1380+
columns.append(
1381+
f"{m2m_relationship._meta.name} = M2M({joining_table_name})"
1382+
)
1383+
13751384
columns_string = spacer.join(columns)
13761385
tablename = repr(cls._meta.tablename)
13771386

tests/table/test_str.py

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,20 @@
11
from unittest import TestCase
22

3-
from tests.base import engine_is
4-
from tests.example_apps.music.tables import Manager
3+
from piccolo.apps.playground.commands.run import Genre, Manager
54

65

76
class TestTableStr(TestCase):
8-
def test_str(self):
9-
if engine_is("cockroach"):
10-
self.assertEqual(
11-
Manager._table_str(),
12-
(
13-
"class Manager(Table, tablename='manager'):\n"
14-
" id = Serial(null=False, primary_key=True, unique=False, index=False, index_method=IndexMethod.btree, choices=None, db_column_name='id', secret=False)\n" # noqa: E501
15-
" name = Varchar(length=50, default='', null=False, primary_key=False, unique=False, index=False, index_method=IndexMethod.btree, choices=None, db_column_name=None, secret=False)\n" # noqa: E501
16-
),
17-
)
18-
else:
19-
self.assertEqual(
20-
Manager._table_str(),
21-
(
22-
"class Manager(Table, tablename='manager'):\n"
23-
" id = Serial(null=False, primary_key=True, unique=False, index=False, index_method=IndexMethod.btree, choices=None, db_column_name='id', secret=False)\n" # noqa: E501
24-
" name = Varchar(length=50, default='', null=False, primary_key=False, unique=False, index=False, index_method=IndexMethod.btree, choices=None, db_column_name=None, secret=False)\n" # noqa: E501
25-
),
26-
)
7+
def test_all_attributes(self):
8+
self.assertEqual(
9+
Manager._table_str(),
10+
(
11+
"class Manager(Table, tablename='manager'):\n"
12+
" id = Serial(null=False, primary_key=True, unique=False, index=False, index_method=IndexMethod.btree, choices=None, db_column_name='id', secret=False)\n" # noqa: E501
13+
" name = Varchar(length=50, default='', null=False, primary_key=False, unique=False, index=False, index_method=IndexMethod.btree, choices=None, db_column_name=None, secret=False)\n" # noqa: E501
14+
),
15+
)
2716

17+
def test_abbreviated(self):
2818
self.assertEqual(
2919
Manager._table_str(abbreviated=True),
3020
(
@@ -34,5 +24,23 @@ def test_str(self):
3424
),
3525
)
3626

37-
# We should also be able to print it directly.
27+
def test_m2m(self):
28+
"""
29+
Make sure M2M relationships appear in the Table string.
30+
"""
31+
32+
self.assertEqual(
33+
Genre._table_str(abbreviated=True),
34+
(
35+
"class Genre(Table):\n"
36+
" id = Serial()\n"
37+
" name = Varchar()\n"
38+
" bands = M2M(GenreToBand)\n"
39+
),
40+
)
41+
42+
def test_print(self):
43+
"""
44+
Make sure we can print it directly without any errors.
45+
"""
3846
print(Manager)

0 commit comments

Comments
 (0)