Почему ошибка показывает 5 позиционных аргументов при регистрации модели

Я пытаюсь сделать чат-приложение на Django. Я создал модель для ввода в базу данных формата room_no, user, message. Кроме того, я включил функцию init для извлечения данных из базы данных в виде строки, чтобы я мог отобразить их на HTML-странице. Кроме моего метода, есть ли другой способ сделать это? Если нет, не могли бы вы объяснить мою ошибку?

Модели:

 class chatbox(models.Model):
        name = models.CharField(max_length=100, blank=False,default='Anonymous')
        room = models.CharField(max_length=100,blank=True)
        message = models.CharField(max_length=500000,blank=True)
        def __init__(self,name,message):
            self.name = name 
            self.message = message 

ADMIN

admin.site.register(models.chatbox)

Ошибка:

TypeError at /admin/DjangoChat/chatbox/
chatbox.__init__() takes 3 positional arguments but 5 were given

У вас может возникнуть искушение настроить модель, переопределив метод init. Однако, если вы это сделаете, следите за тем, чтобы не изменить сигнатуру вызова, поскольку любое изменение может помешать сохранению экземпляра модели. Вместо переопределения init попробуйте использовать один из этих подходов:

1-Добавить метод класса модели:

 class Chatbox(models.Model):
    name = models.CharField(max_length=100, blank=False,default='Anonymous')
    room = models.CharField(max_length=100,blank=True)
    message = models.CharField(max_length=500000,blank=True)
    @classmethod
    def create(cls, name, message):
        chatbox= cls(name=name, message=message)
        # do something with the book
        return chatbox

 chatbox= Chatbox.create("usama", "hello world")

2-Добавить метод в пользовательский менеджер (обычно предпочтительнее):

class Chatbox(models.Manager):
    def create_chatbox(self, name, message):
        chatbox= self.create(name=name, message=message)
        # do something with the book
        return chatbox

class ChatboxManager(models.Model):
    name = models.CharField(max_length=100, blank=False,default='Anonymous')
    room = models.CharField(max_length=100,blank=True)
    message = models.CharField(max_length=500000,blank=True)

    objects = ChatboxManager()

chatbox= Chatbox.objects.create_chatbox("usama", "hello world")

Вы можете получить более подробную информацию из Документация

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