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

时间:2019-01-20 23:13:31

标签: python django

我正在尝试创建一种更新具有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})

End Result

1 个答案:

答案 0 :(得分:0)

您必须使用shutdownSignal.set(true).unsafeRunSync() 这样的参数:

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

我希望有帮助。

相关问题