鱼C论坛

 找回密码
 立即注册
查看: 2070|回复: 1

[已解决]ModelForm 显示不让修改问题

[复制链接]
发表于 2023-4-20 12:17:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

class User(forms.ModelForm):
    # name = forms.CharField(min_length=3,label="用户名")
    ss = forms.CharField(disabled=True,label="姓名")
    class Meta:
        model = models.Userinfo
        fields = ["id","age","gen","password","name"]
def edit(request,nid):
    sss=models.Userinfo.objects.filter(id=nid).first()
    if request.method == "GET":
        form = User(instance=sss)
        return render(request, "edit.html", {"form": form})
    form = User(data=request.POST,instance=sss)
    if form.is_valid():
        form.save()
        return redirect('/view/')
    return render(request,"edit.html",{"form":form})
前台显示

1681964124004.jpg


正常应该显示姓名那一列 然后又内容但是不能修改  现在多出来了  而且也没有数据
最佳答案
2023-4-22 10:20:25
根据你提供的代码,你在 User 表单类中添加了一个 ss 字段作为 disabled,在模板中也没有使用到这个字段,所以可能会导致多出来一个空的列。如果你只是想显示 Userinfo 模型中的 name 字段,可以将 ss 字段删除,只留下 name 字段即可:
class User(forms.ModelForm):
    class Meta:
        model = models.Userinfo
        fields = ["id", "age", "gen", "password", "name"]
如果你需要在模板中自定义 name 字段的展示方式,可以通过在模板中重写 name 字段的展示方式来实现,例如:
{% for field in form %}
  {% if field.name == "name" %}
    <div class="form-group">
      <label class="control-label col-sm-2">{{ field.label }}</label>
      <div class="col-sm-10">
        <p class="form-control-static">{{ field.value }}</p>
      </div>
    </div>
  {% else %}
    {{ field }}
  {% endif %}
{% endfor %}
上面的代码将 name 字段展示为一个静态文本框,而其他字段则按照默认的方式展示。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-22 10:20:25 | 显示全部楼层    本楼为最佳答案   
根据你提供的代码,你在 User 表单类中添加了一个 ss 字段作为 disabled,在模板中也没有使用到这个字段,所以可能会导致多出来一个空的列。如果你只是想显示 Userinfo 模型中的 name 字段,可以将 ss 字段删除,只留下 name 字段即可:
class User(forms.ModelForm):
    class Meta:
        model = models.Userinfo
        fields = ["id", "age", "gen", "password", "name"]
如果你需要在模板中自定义 name 字段的展示方式,可以通过在模板中重写 name 字段的展示方式来实现,例如:
{% for field in form %}
  {% if field.name == "name" %}
    <div class="form-group">
      <label class="control-label col-sm-2">{{ field.label }}</label>
      <div class="col-sm-10">
        <p class="form-control-static">{{ field.value }}</p>
      </div>
    </div>
  {% else %}
    {{ field }}
  {% endif %}
{% endfor %}
上面的代码将 name 字段展示为一个静态文本框,而其他字段则按照默认的方式展示。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 15:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表