Я пытаюсь создать чат-приложение на 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
Отвечает ли это на ваш вопрос? Написание функции __init__ для использования в модели django
У вас может возникнуть соблазн настроить модель, переопределив метод в этом. Однако если вы это сделаете, позаботьтесь о том, чтобы не изменить сигнатуру вызова, так как любое изменение может помешать сохранению экземпляра модели. Вместо переопределения в этом попробуйте использовать один из следующих подходов:
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")
вы можете получить более подробную информацию от Документация
admin.site.register()
требуетAdminModel
в качестве аргумента, а неModel
.