Возможно ли иметь общее поле в моделях django?

В настоящее время я пытаюсь разработать схему БД для приложения чата.
И у меня возникла некоторая путаница относительно типа поля, в котором я должен хранить содержимое каждого сообщения.
Вот частично завершенная схема БД для сообщения чата:

...
...
...


# types of chat messages available
TEXT = 'text'
IMAGE = 'image'
...


MESSAGE_TYPE = [
    (TEXT, _('Chat message type : Text')),
    (IMAGE, _('Chat message type : Image')),
    ....
]

# User class represents a user of the application

class ChatMessage(models.Model):
    """
    Class for storing chat messages between `Users`
    """

    # type of the message
    message_type = models.CharField(choices=MESSAGE_TYPE, max_length=50, null=False)

    # user who created the text message
    sender = models.ForeignKey(User,related_name='sender', on_delete=models.CASCADE, null=False)

    # user who is supposed to receive the message
    recipient = models.ForeignKey(User,related_name='recipient', on_delete=models.CASCADE, null=False)

    # timestamp at which the message was created
    created_at = models.DateTimeField(default=timezone.now)

    # whether the recipient has seen the message
    seen = models.BooleanField()

    # content of the chat message
    content = .....

Я планирую использовать утилиты кодировщика/декодировщика для интерпретации content для различных типов сообщений чата с помощью поля message_type. Но у меня возникают трудности с определением поля, которое подходит для этого.


Достаточно ли адекватна эта схема БД для выполнения этой задачи? Должен ли я прибегнуть к какой-то другой схеме? Я использую PostgreSQL.

Любая помощь будет принята с благодарностью.


Спасибо, что прочитали.

Нет никакой разницы между CharField и ImageField для базы данных, django сохраняет путь файла к базе данных и сохраняет себя в upload_to путь при использовании FileField.

Вернуться на верх