开发者社区> 问答> 正文

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

一码平川MACHEL 2019-01-22 11:49:17 413

我正在尝试创建一种方法来更新具有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})
数据库
分享到
取消 提交回答
全部回答(1)
  • 一码平川MACHEL
    2019-07-17 23:26:13

    你必须使用这样的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

    0 0
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程