我正在尝试创建一种更新具有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})
答案 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
。
我希望有帮助。