Почему ошибка показывает 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")
Вы можете получить более подробную информацию из Документация