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

Я пытаюсь создать чат-приложение на Django. Я создал модель для ввода в базу данных формата номер_номер, пользователь, сообщение. Кроме того, я включил функцию в этом для извлечения данных из базы данных в виде строки, чтобы я мог отобразить их на странице 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.site.register(models.chatbox)

Ошибка:

TypeError at /admin/DjangoChat/chatbox/
chatbox.__init__() takes 3 positional arguments but 5 were given
admin.site.register() требует AdminModel в качестве аргумента, а не Model.
Klaus D. 10.04.2022 14:05

Отвечает ли это на ваш вопрос? Написание функции __init__ для использования в модели django

Abdul Aziz Barkat 10.04.2022 14:58
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения текстовых сообщений может быть настолько сложным или простым, насколько вы его сделаете. Как и в любом ML-проекте, вы можете выбрать...
7 лайфхаков для начинающих Python-программистов
7 лайфхаков для начинающих Python-программистов
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ...
Создание персонального файлового хранилища
Создание персонального файлового хранилища
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это...
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
0
2
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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")

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

Другие вопросы по теме