列“user_id”中的空值违反了非空约束Django形式-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

列“user_id”中的空值违反了非空约束Django形式

2019-01-18 10:15:22 3311 1

尝试为用户个人资料页面实现文件上载。我收到以下错误:

列“user_id”中的空值违反非空约束DETAIL:失败行包含(35,profile / {now:%Y /%m / YmdHMSext_xg2iZ6M,null,null)。

我已经读过它可能与User_ID有关,我试过传递form.user = request.user,但是没有用。还有两个空值,而不仅仅是一个空值。

Models.py

class User(AbstractUser):

# First Name and Last Name do not cover name patterns
# around the globe.
name = models.CharField(_('Name of User'), blank=True, 
max_length=255)
#accepted_terms_of_service = models.Booleanfield()

def __str__(self):
    return self.username

def get_absolute_url(self):
    return reverse('users:detail', kwargs={'username': 

self.username})

Profile Image
def upload_to(instance, filename):

now = timezone_now()
base, ext = os.path.splitext(filename)
ext = ext.lower()
return "profile/{now:%Y/%m/%Y%m%d%H%M%S}{ext}"

class Profile(models.Model):

user = models.OneToOneField(settings.AUTH_USER_MODEL, 

on_delete='CASCADE', related_name='user_profile')

school = models.CharField(max_length=30, null=True, blank=True)
image = models.ImageField(_("Picture"), upload_to=upload_to, 

null=True, blank=True)

def __str__(self):
    return self.user.username

views.py

@login_required
def add_image(request):

 form = ProfileImageForm()
 #form.user = request.user
 if request.method == "POST":
     form = ProfileImageForm(data=request.POST, files=request.FILES)
 if form.is_valid():
     form.save()
     return redirect('userPage')
 else:
     return render(request, "users/user_image_form.html", {"form": form
    })

forms.py

class ProfileImageForm(forms.ModelForm):

class Meta:
    model = Profile
    fields = ["image"]
取消 提交回答
全部回答(1)
  • 一码平川MACHEL
    2019-07-17 23:25:48

    我认为没有必要同时拥有Profile Model和Custom User Model。因为,当您自定义用户模型时,为什么不将Profile模型的字段也放到用户模型中。你可以像这样:

    model

    def upload_to(instance, filename):

    now = timezone_now()
    base, ext = os.path.splitext(filename)
    ext = ext.lower()
    return "profile/{now:%Y/%m/%Y%m%d%H%M%S}{ext}"
    

    class User(AbstractUser):

    name = models.CharField(_('Name of User'), blank=True, 
    max_length=255)
    school = models.CharField(max_length=30, null=True, blank=True)
    image = models.ImageField(_("Picture"), upload_to=upload_to, 
                              null=True, blank=True)
    
    def __str__(self):
        return self.username
    
    def get_absolute_url(self):
        return reverse('users:detail', kwargs={'username': 

    self.username})

    views

    @login_required
    def add_image(request):

     form = ProfileImageForm(data=request.POST or None, file=request.FILES or None, instance=request.user)
     if request.method == "POST":
    
        if form.is_valid():
             form.save()
             return redirect('userPage')
    
     return render(request, "users/user_image_form.html", {"form": form
        })
    

    forms.py

    class ProfileImageForm(forms.ModelForm):

    class Meta:
        model = User
        fields = ["image"]
    

    这是因为在您的Profile模型中,您将user列添加为ForeignKey,强制执行NOT NULL以便抛出错误。要解决这个问题,您需要修改add_image类似这样的方法

    @login_required
    def add_image(request):

     form = ProfileImageForm()
     #form.user = request.user
     if request.method == "POST":
         form = ProfileImageForm(data=request.POST, files=request.FILES)
     if form.is_valid():
         form = form.save(commit=False) # change is here
         form.user=request.user.pk # change is here
         form.save()
         return redirect('userPage')
     else:
         return render(request, "users/user_image_form.html", {"form": form

    该request.user.pk值得到,如果您已经登录,但如果你是在您登录需要assisn form.user = your_specified_id其ID存在于User表。如果您的情况是,您是管理员,并且您需要将图像添加到其他用户,因此您需要在add_image方法中传递用户ID 。

    在字段列表中ProfileImageForm.py 添加添加user

    0 0
相关问答

1

回答

R16 中如何就DFT-s-OFDM 波形的PUSCH/PUCCH 的 DMRS 进行增强?

2022-04-11 16:13:19 452浏览量 回答数 1

1

回答

kafka中的kafka Streams DSL API的优点是什么?

2021-12-10 17:40:02 370浏览量 回答数 1

1

回答

kafka里的dfsinit.exe作用和优点是什么?

2021-12-07 19:50:31 261浏览量 回答数 1

1

回答

Django中HTTP_USER_AGENT字符它是什么意思呢?

2021-11-17 16:46:10 124浏览量 回答数 1

1

回答

短信申请签名API,Server response has a bad format typeRAW

2021-02-09 14:12:16 1226浏览量 回答数 1

1

回答

SSL证书申请-手动DNS验证

2020-04-02 14:41:49 1812浏览量 回答数 1

1

回答

axios+tp5进阶中,调用axios.post(‘api/user’)是进行的什么操作?axio

2020-02-18 09:56:43 1332浏览量 回答数 1

1

回答

是否可以在AWS实例中运行Django中的R脚本?

2019-12-30 10:51:02 1051浏览量 回答数 1

1

回答

如何在django中生成网址

2019-09-02 17:23:57 503浏览量 回答数 1

1

回答

mysql,查询中ORDER BY A,B,C DESC 太慢,如何优化

2016-06-16 18:19:41 3195浏览量 回答数 1
47
文章
723
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载