You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:21:03