首页 > 解决方案 > Django 默认放置空字符串,同时期望它在 DB 列中为空

问题描述

我将postgresql10.6 版与我的Django2.1 应用程序一起使用。问题是,当我null=True在我的模型字段中使用它时,它会将数据库列中的空字符串('')转换为默认值,而我尝试将其默认为null.

在我的以下代码示例image列中应该是null

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    image = models.ImageField(upload_to='profile_pics', null=True, blank=True) 

我这样称呼这个类signal

@receiver(post_save, sender=User)
def create_profile(sender, **kwargs):
    if kwargs.get('created') is True:
        Profile.objects.create(user=kwargs.get('instance'))

在此快照中,您可以看到该image列作为空字符串插入,而不是null

在此处输入图像描述

我还尝试将我的模型字段的默认值用作:

image = models.ImageField(default=None, upload_to='profile_pics', null=True, blank=True)

但它也不起作用。

标签: pythondjangopostgresqldjango-modelsdjango-orm

解决方案


image = models.ImageField(upload_to='profile_pics', null=True) 

去除blank=True


推荐阅读