使用django 1.11
我正在使用一个django帐户项目的API后端。下面是一个类的示例:
from __future__ import unicode_literals
from django.db import models
from django.utils import timezone
from django.conf import settings
import datetime
class Credit(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
name = models.CharField(max_length=200)
payment_reference = models.IntegerField()
amount = models.IntegerField()
payment_type = models.CharField(max_length=200,default='Paypal')
country = models.CharField(max_length=200,default='Ireland')
payment_location = models.CharField(max_length=200,default='On-site')
date = models.DateTimeField(auto_now_add=True)
标准用户在另一个名为profiles的应用程序中被重写了,我已经在设置.py-'AUTH\u USER\u MODEL='配置文件.用户'
from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import AbstractUser, UserManager
from django.utils import timezone
# Create your models here.
class Profile(UserManager):
def _create_user(self, username, email, password,
is_staff, is_superuser, **extra_fields):
now = timezone.now()
if not email:
raise ValueError('The given username must be set')
email = self.normalize_email(email)
user = self.model(username=email, email=email,
is_staff=is_staff, is_active=True,
is_superuser=is_superuser,
date_joined=now, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
class User(AbstractUser):
objects = Profile()
但是,当我尝试运行makemigrations时,我被告知我正在尝试将可为null的字段“user”更改为不可为null的字段,而不使用默认值。如果我正在引用活动用户,为什么我需要一个默认值?我希望外键值是活动用户对象。这样就可以过滤信用实例,只显示那些带有登录用户外键的信用实例。你知道吗
谢谢
您被告知正在尝试将可为null的字段“user”更改为不可为null,而不使用默认值,因为这正是您所拥有的:
如果
Credit
模型有任何现有行,则数据库将无法添加该列,因为您没有指定默认值,并且不允许null
。你知道吗一旦为数据库中的所有现有行填充了
user
列,就可以添加notnull约束。你知道吗makemigrations
脚本允许您在添加带有null=False
的列时指定一次性默认值。如果您的表还不包含任何行,这将非常有用。你知道吗相关问题 更多 >
编程相关推荐