Python Django中的所有模型基本上都有分配给对象变量的init构造函数吗
假设我有这样的东西Python Django中的所有模型基本上都有分配给对象变量的init构造函数吗,python,django,Python,Django,假设我有这样的东西 class Album(models.Model): artist = models.CharField(max_length=128, unique=True) title = models.CharField(max_length=128, unique=True) 现在我能做到了 inst = Album(artist="Shania Twain",title="blah") 由于我没有研究模型类是如何在引擎盖下创建的,我很好奇所有的模型类是否也有一
class Album(models.Model):
artist = models.CharField(max_length=128, unique=True)
title = models.CharField(max_length=128, unique=True)
现在我能做到了
inst = Album(artist="Shania Twain",title="blah")
由于我没有研究模型类是如何在引擎盖下创建的,我很好奇所有的模型类是否也有一个init构造函数?比如说
class Album(models.Model):
artist = models.CharField(max_length=128, unique=True)
title = models.CharField(max_length=128, unique=True)
def __init__(self,artist):
Album.artist = artist
..........
..........
请告诉我这是否合理。是的,但不建议覆盖它 你可以这样做。但不推荐这样做
def __init__(self, name, email, password, *args, **kwargs):
super(models.Model, self).__init__(*args, **kwargs)
self.name = name
self.email = email
# or whatever you want
来自Django docs
您可能会试图通过覆盖init来定制模型
方法。但是,如果您这样做,请注意不要更改呼叫
签名,因为任何更改都可能阻止模型实例
拯救
如果要添加字段或执行其他操作,请尝试在模型中添加create方法
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
@classmethod
def create(cls, title):
book = cls(title=title)
# do something with the book
return book
book = Book.create("Pride and Prejudice")