Одна «Таблица» будет лучше для целей поиска (вы можете «искать» по всем сообщениям одновременно.
Тем не менее, скорость может быть полезна для нескольких таблиц.
Почему бы не использовать абстрактные классы?
class MessageBase(models.Model):
subject = models.CharField(max_length=255)
test = models.TextField()
class ChatMessage(MessageBase):
pass
Это создаст 2 таблицы, причем таблица для ChatMessage просто ссылается непосредственно на таблицу для MessageBase. Это даст вам лучшее из обоих миров. «Поиск» с использованием MessageBase, чтобы получать сообщения для чего угодно, но сохранять и ссылаться на все другие сообщения, используя определенный класс модели.
(обратите внимание, что питон здесь может быть немного неправильным, так как он не был протестирован, но я уверен, что вы поняли!)