Use*_*511 3 python django django-models
当我尝试运行时,收到有关 Django 模型的错误makemigrations:
您正在尝试向所有者添加一个不可为空的字段“person”,但没有默认值;我们不能这样做(数据库需要一些东西来填充现有的行)。
请选择修复:
- 现在提供一次性默认值(将在所有现有行上设置)
- 退出,让我在 models.py 中添加默认值
我正在使用 Django 1.8,这是我的模型:
class Person(models.Model):
user = models.OneToOneField(User)
alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*$', message='hanya yang mengandung karakter alphanumeric')
email = models.EmailField(verbose_name='email address', unique=True, max_length=244)
username = models.CharField(unique=True, max_length=20, validators=[alphanumeric])
first_name = models.CharField(max_length=30, null=True, blank=True)
last_name = models.CharField(max_length=30, null=True, blank=True)
date_of_birth = models.DateTimeField()
date_joined = models.DateTimeField(auto_now_add=True)
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email']
def get_full_name(self):
fullname = self.first_name+" "+self.last_name
return self.fullname
def get_short_name(self):
return self.username
def list_operator(self):
return self.operators.all()
def __str__(self):
return self.email
class Operator(models.Model):
person = models.ForeignKey(Person, related_name="operators", null=True)
alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*$', message='hanya yang mengandung karakter alphanumeric')
email = models.EmailField(verbose_name='email address', unique=True, max_length=244)
username = models.CharField(unique=True, max_length=20, validators=[alphanumeric])
first_name = models.CharField(max_length=30, null=True, blank=True)
last_name = models.CharField(max_length=30, null=True, blank=True)
date_of_birth = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.username;
Run Code Online (Sandbox Code Playgroud)
你能帮我解决这个问题吗?
你的代码没有错。只需按照消息中提供的说明进行操作即可...
person模型中的字段不能Operator(null因为null=True未设置)。您的数据库中必须已经有 Operator,因此 Django 不知道如何处理这些操作。
您需要:(a)default在模型中提供一个值,(b) 在迁移过程中提供默认值,或者 (c) 启用null该字段的值。
| 归档时间: |
|
| 查看次数: |
10326 次 |
| 最近记录: |