Django OneToOneField默认值

Meh*_*bmp 7 python django

最近我在django模型中添加了OneToOneField,我在此字段中将None设置为默认值.然后我收到了这个错误:

django.db.utils.IntegrityError: NOT NULL constraint failed: user_myuser.album_id

型号:

class MyUser(models.Model):

    username = models.CharField(unique=True, max_length=25)
    first_name = models.CharField(max_length=50, default='')
    last_name = models.CharField(max_length=70, default='')
    register_date = models.DateTimeField(default=timezone.now)
    update_at = models.DateTimeField(auto_now=True)

    # the default value problem is here 
    album = models.OneToOneField(Album, auto_created=True, 
    on_delete=models.CASCADE, default=None)
Run Code Online (Sandbox Code Playgroud)

这是专辑模型:

class Album(models.Model):
    name = models.CharField(max_length=100, null=True)
    author = models.CharField(max_length=100, null=True)
    picture_address = models.ImageField(upload_to=album_upload_destination, null=True)
    creation_year = models.IntegerField(default=-1)
    rate = models.IntegerField(default=0)
    timestamp = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

Ast*_*and 5

因为NOT NULL约束失败因此错误.

要么做 null=True

album = models.OneToOneField(Album,on_delete=models.CASCADE, null=True)
Run Code Online (Sandbox Code Playgroud)

或使用信号将用户与相册相关联.

  • 谢谢这将解决错误,我如何制作默认相册而不是无 (2认同)
  • 这样所有用户都会拥有相同的专辑(例如album_id = 0),有没有办法在默认情况下构建实例? (2认同)
  • 将`default = 1`用于一对一字段是没有意义的.第一次使用默认设置时,它会起作用,但第二次出现错误,因为每个专辑只能链接到一个用户. (2认同)