Python Django OneToOneField默认值
最近,我在django模型中添加了一个OneToOneField,我在该字段中设置了None作为默认值。然后我得到了这个错误:Python Django OneToOneField默认值,python,django,Python,Django,最近,我在django模型中添加了一个OneToOneField,我在该字段中设置了None作为默认值。然后我得到了这个错误: django.db.utils.IntegrityError:非空约束失败:用户\u myuser.album\u id 型号: class MyUser(models.Model): username = models.CharField(unique=True, max_length=25) first_name = models.CharFiel
django.db.utils.IntegrityError:非空约束失败:用户\u myuser.album\u 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)
以下是相册型号:
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)
由于非空约束失败,因此出现错误 make
null=True
album = models.OneToOneField(Album,on_delete=models.CASCADE, null=True)
或者使用信号连接用户与相册。因为:
1) 相册上的所有字段都可以为空或具有默认值和
2) 您可以将可调用参数传递给默认参数
这应该起作用:
album = models.OneToOneField(Album, on_delete=models.CASCADE, default=Album.objects.create)
感谢这将解决错误,我如何创建默认相册而不是非您可以上载默认相册并作为默认值传递给模型字段1。这样所有用户都将拥有相同的相册(例如,相册id=0),是否有任何方法以默认值构建实例?只有当某些用户不上载时,它才是默认值。您可以创建泛型。对于一对一字段,使用
default=1
是没有意义的。第一次使用默认值时,它会起作用,但第二次会出现错误,因为每个相册只能链接到一个用户。它不是,album。object
是一个从queryset获取可用方法的管理器。由于相册表尚不存在,因此调用create失败。