开发者社区> 问答> 正文

如何在ModelForm中删除此错误消息?

我正在尝试创建一种方法来更新具有CharField和ForeignKey字段的数据库项。我想传递原始值,这样就不必每次都为每个字段手动输入它们,但这给了我一个“选择一个有效的选择。这个选择不是可用的选择之一。” 对该group领域的警告。如何删除此警告消息?

手动将错误消息(在ModelForm中)设置为其他内容仍会显示空(无序)列表项。设置表单UpdateUserView以form = UserForm()消除错误,但不将默认值传递给表单。

models.py

class User(models.Model):

username = models.CharField(max_length=50)
group = models.ForeignKey(Group, on_delete=models.CASCADE)

class Group(models.Model):

name = models.CharField(max_length=20)
description = models.CharField(max_length=200)

forms.py

class UserForm(forms.ModelForm):

class Meta:
    model = User
    fields = ['username', 'group']

views.py

class UpdateUserView(TemplateView):

template_name = 'update_user.html'

def get(self, request):
    user_id = int(request.GET.get('user_id'))
    user = User.objects.get(id=user_id)
    default_name = getattr(user, 'username')
    default_group = getattr(user, 'group')
    form = UserForm({'username': default_name, 'group': default_group})
    return render(request, self.template_name, {'form': form, 'user': user})

展开
收起
一码平川MACHEL 2019-01-22 11:49:17 1695 0
1 条回答
写回答
取消 提交回答
  • 你必须使用这样的initial参数:

    class UpdateUserView(TemplateView):

    template_name = 'update_user.html'
    
    def get(self, request):
        user_id = int(request.GET.get('user_id'))
        user = User.objects.get(id=user_id)
        form = UserForm(initial={'username': user.username, 'group': user.group.id})
        return render(request, self.template_name, {'form': form, 'user': user})

    看看我在group: user.group.id这里使用,因为你在表单中引用的模型字段是一个ForeignKey

    2019-07-17 23:26:13
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载