我正在通过做一些教程来学习django,目前我正在effective-django教程中获得所有权。不幸的是,这些教程是为旧版django编写的,所以有些东西略有不同。
在models.py:
中向模型联系人添加“所有者”字段时遇到问题from django.db import models
from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
class Contact(models.Model):
"""
Interface for contact class
"""
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
email = models.EmailField()
owner = models.ForeignKey(User)
def __str__(self):
return ' '.join([self.first_name, self.last_name])
def get_absolute_url(self):
return reverse('contacts-view', kwargs={'pk': self.id})
尝试运行'makemigrations'时,我会收到警告:
您尝试在没有默认设置的情况下添加不可为空的字段“所有者”:不能这样做
这对现有数据库有意义,所以我尝试刷新数据库。但问题仍然存在。字段所有者的默认值应该是多少?我也尝试使字段可以为空,但这给了我一个错误,即字段所有者不能为空。
答案 0 :(得分:1)
我通常设置为1
。在这种情况下,已存在的记录将分配给第一个用户。
如果您愿意,以后可以在下次数据迁移中重新分配这些记录。
答案 1 :(得分:1)
嗯,数据库是否为空并不重要。重要的是您可能已经至少有一个首先创建模型的迁移,然后您尝试运行添加该字段的makemigrations
。
如果这些迁移对您来说不是很重要(因为这是教程,我不会重新进行迁移),只需删除所有以前的迁移并运行makemigrations
新的。
或者,您必须手动更改迁移,可能提供默认值等。