Возможно ли иметь общее поле в моделях 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
.