Django婚恋网站模型__str__返回NoneType且点击编辑自动删数据
Django婚恋网站用户资料点击编辑即清空数据问题
问题现象
我在开发基础婚恋网站,支持用户上传个人资料,资料需经管理员审核后公开展示。最初资料增删改查功能正常,尝试添加userForeignKey模块实现用户自动关联功能后出现两个问题:
- 报错
__str__ returned non-string (type NoneType) - 点击编辑profile,还没打开表单页,对应profile的全部数据就会从数据库删除,所有字段显示为null,操作发生在加载带实例的表单之前
卸载模块、回退到之前正常版本后问题仍未解决。同样的更新逻辑用在其他模型上无报错,仅该模型存在问题。
相关代码
模型代码
class matrimony_db(models.Model): category = ( ('MALE', 'Male'), ('FEMALE', 'Female'), ) challenge = ( ('Yes', 'Yes'), ('No', 'No'), ) ms = ( ('Single', 'Single'), ('Married', 'Married'), ('Divorced', 'Divorced'), ('widow', 'widow'), ('widower', 'widower'), ) # 个人信息 img = models.ImageField(upload_to = 'matrimony/') name = models.CharField(max_length=100,null = True, blank = True) dob = models.DateField(null = True, blank = True) gender = models.CharField(max_length = 10, choices = category,null = True, blank = True) phone = models.CharField(max_length=50,null = True, blank = True) bio = models.TextField(null = True, blank = True) # 职业与教育信息 occupation = models.CharField(max_length = 200,null = True, blank = True) Highest_Education = models.CharField(max_length = 500,null = True, blank = True) # 身体信息 Height = models.CharField(max_length = 200,null = True, blank = True) weight = models.CharField(max_length = 200,null = True, blank = True) physical_challenge=models.CharField(max_length = 10, choices = challenge,null = True, blank = True) Physical_remarks = models.CharField(max_length = 500,null = True, blank = True) # 婚姻与居住地信息 Marital_status = models.CharField(max_length=50, choices = ms,null = True, blank = True) Languages = models.CharField(max_length = 200,null = True, blank = True) currentplace = models.CharField(max_length = 200,null = True, blank = True) # 家庭信息 father = models.CharField(max_length=200,null = True, blank = True) mother = models.CharField(max_length=200,null = True, blank = True) mother_occupation = models.CharField(max_length=200,null = True, blank = True) father_occupation = models.CharField(max_length=200,null = True, blank = True) siblings = models.TextField(null = True, blank = True) # 择偶要求 spouse = models.TextField(null = True, blank = True) def __str__(self): return self.name def delete(self, *args, **kwargs): self.img.delete() super().delete(*args, **kwargs)
表单代码
class form_matrimony(forms.ModelForm): img = forms.ImageField(required=False) class Meta: model = matrimony_db fields = '__all__'
视图代码
def view_update_matrimony(request, pk): book = matrimony_db.objects.get(pk=pk) form = form_matrimony(instance=book) if request.method == 'POST': forms = form_matrimony(request.POST,request.FILES,instance = book ) if forms.is_valid(): forms.save() sb = str(book) messages.success(request, 'Files in ' +sb + " updated successfully") return redirect('admin_matrimony') else: form = form_matrimony() return render(request,'admin_loc_matrimony_new.html',{'form':form})
注意:尝试部分修复方法后,类型错误不再出现,但数据仍会被自动删除。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

