我有Python 3.5和Django 1.9尝试做下一个
class Question(models.Model):
def __init__(self, *args, question_text=None, pub_date=None, **kwargs):
self.question_text = question_text
self.pub_date = pub_date
question_text = models.CharField(max_length=200, verbose_name="Question")
pub_date = models.DateTimeField('date_published', verbose_name="Date")
def __str__(self):
return self.question_text
def __unicode__(self):
return self.question_text
class Meta:
verbose_name = "Question"
Run Code Online (Sandbox Code Playgroud)
但是有一个错误
文件“ /home/donotyou/PycharmProjects/djangobook/polls/models.py”,第15行,在问题pub_date = models.DateTimeField('date_published',verbose_name =“ Date”)TypeError中:init()为参数'获得了多个值verbose_name'
请帮忙
您无需__init__在Django中覆盖。Django正在为您做所有事情,您只需要定义模型就可以了。
但是,您得到的错误是因为pub_date = models.DateTimeField('date_published', verbose_name="Date")在这里您设置了verbose_name两次,因为django的第一个参数Field是verbose_name,然后设置了verbose_name相同的参数,使两个相同的参数传递给class。
所以基本上您需要做的是:
class Question(models.Model):
question_text = models.CharField(max_length=200, verbose_name="Question")
pub_date = models.DateTimeField('date_published') # or pub_date = models.DateTimeField("Date")
def __str__(self):
return self.question_text
def __unicode__(self):
return self.question_text
class Meta:
verbose_name = "Question"
Run Code Online (Sandbox Code Playgroud)
注意:在大多数情况下,将其verbose_name作为第一个参数传递时更易读,而没有verbose_name=关系字段。从文档:
每个字段类型,除了
ForeignKey,ManyToManyField并且OneToOneField,有一个可选的第一位置参数-一个详细名称。如果未提供详细名称,则Django将使用字段的属性名称自动创建,将下划线转换为空格。