- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 request
对象传递到我的 inlineformset_factory
中,并且正在努力实现这一点。
在 forms.py
我有以下内容:
class SummativeScoreForm(forms.ModelForm):
"""
Form definition for SummativeScore Form
"""
subdomain_proficiency_level = forms.ModelChoiceField(
empty_label="Undecided",
queryset=SubdomainProficiencyLevel.objects.none(),
widget=forms.RadioSelect,
required=False,
)
def __init__(self, *args, **kwargs):
self.request = kwargs.pop("request", None)
super(SummativeScoreForm, self).__init__(*args, **kwargs)
if self.instance:
if self.request.user == self.instance.summative.employee:
self.fields["subdomain_proficiency_level"].disabled = True
self.fields[
"subdomain_proficiency_level"
].queryset = SubdomainProficiencyLevel.objects.filter(
subdomain=self.instance.subdomain
)
self.fields[
"subdomain_proficiency_level"
].label = f"""
{self.instance.subdomain.character_code}:
{self.instance.subdomain.short_description}
"""
class Meta:
model = SummativeScore
fields = "__all__"
widgets = {
"subdomain_proficiency_level": forms.RadioSelect(
attrs={"class": "list-unstyled"}
),
}
SummativeScoreInlineFormset = inlineformset_factory(
Summative,
SummativeScore,
fields=("subdomain_proficiency_level",),
can_delete=False,
extra=0,
form=SummativeScoreForm,
)
我正在使用 FormView
CBV 来显示此 inline_formset
class SummativeScoreFormView(
LoginRequiredMixin,
UserIsObserverOrObserveeMixin,
SingleObjectMixin,
FormView,
):
model = Summative
template_name = "commonground/summative_score_form.html"
pk_url_kwarg = "summative_id"
def get(self, request, *args, **kwargs):
summative_id = kwargs.pop("summative_id")
self.object = self.get_object(
queryset=Summative.objects.filter(id=summative_id)
)
return super().get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
summative_id = kwargs.pop("summative_id")
self.object = self.get_object(
queryset=Summative.objects.filter(id=summative_id)
)
return super().get(request, *args, **kwargs)
def get_form(self, form_class=None):
return SummativeScoreInlineFormset(
**self.get_form_kwargs(), instance=self.object
)
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs["request"] = self.request
return kwargs
def form_valid(self, form):
form.save()
messages.add_message(messages.SUCCESS, "Changes were saved!")
HttpResponseRedirect(self.get_success_url())
def form_invalid(self, form):
print("invalid form")
return super().form_invalid(form)
def get_success_url(self):
user_id = self.kwargs["user_id"]
summative_id = self.kwargs["summative_id"]
return reverse(
"commonground:summative_detail",
kwargs={
"user_id": user_id,
"summative_id": summative_id,
},
)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
summative = get_object_or_404(
Summative, pk=self.kwargs["summative_id"]
)
context["summative"] = summative
return context
我一直收到这个错误:
__init__() 得到了一个意外的关键字参数“request”
我不确定如何最好地解决这个问题 - 有什么想法吗?是否有明确的方法将 request
传递给 inlineformset_factory
?
最佳答案
您正在将请求传递给表单集而不是表单集中的表单,因此会出现错误。对于 passing custom parameters to the formsets forms [Django docs]您需要将 form_kwargs
参数传递给表单集:
class SummativeScoreFormView(
LoginRequiredMixin,
UserIsObserverOrObserveeMixin,
SingleObjectMixin,
FormView,
):
...
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs['form_kwargs'] = {'request': self.request}
return kwargs
关于python - 将 kwarg 传递给 inlineformset_factory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69366997/
当小部件与 inlineformset_factory 一起使用时,我无法让它们工作 class TravelsRelationsForm(forms.ModelForm): def __in
在 django 文档中,有一个使用 inlineformset_factory 编辑已创建的对象的示例 https://docs.djangoproject.com/en/dev/topics/fo
我有一个像下面这样的模型。 class Content(SimpleModel): title = models.CharField(max_length=255) body = mo
我正在尝试使用以下模型做一个表单集(提升是主要的): class boost(models.Model): creator = models.ForeignKey(userInfo) game
我正在尝试将 request 对象传递到我的 inlineformset_factory 中,并且正在努力实现这一点。 在 forms.py 我有以下内容: class SummativeScoreF
我正在尝试使用 inlineformset_factory 生成表单集。我的模型定义为: class Measurement(models.Model): subject = models.F
我想将 Django inlineformset_factory 与自定义表单集一起使用,并希望使用 django-dynamic-formset 添加或删除该内联表单集. 表格: class Cre
我有两个模型,我们称它们为模型 A 和模型 B。有一个从 B 到 A 的外键。 即A和B之间的基数为1:n。 我已经为B做了一个对应的ModelForm,叫做MF_B。我在 B 中定义了一个额外的字段
我对 django 还很陌生,我遇到了问题,想请求一些帮助。 我在将自定义参数传递到表单时遇到错误 KeyError at /someurl 'my_arg' Request Method:
我想更改 inlineformset_factory 表单中的默认上传字段 (FileField),以使用 django.contrib.admin.widgets 中的 AdminFileWidge
Django 中的表单可能很复杂。 Formsets 会让你想退出 Django。我就在那个时候。 有哪些不同的用例以及使用哪个(哪些)用例的注意事项? 我正在寻找关于何时使用每个工厂的更好指导,因为
我有一个带有两个外键的模型: class Model1(models.Model): model_a = models.ForeignKey(ModelA) model_b = models.
我的 inlineformset_factory 一直在花花公子地工作,直到我决定弄乱布局。 我已经创建了一个基于图像的表单来处理已经上传的图像(以及默认图像以防空间未被占用)而不是有点无聊的灰色 i
我正在尝试为以下模型创建一个表单集: class Category(models.Model): name = models.CharField(max_length=100, unique=
我正在使用 django inlineformset_factory 函数。 a = get_object_or_404(ModelA, pk=id) FormSet = inlineformset_
我遇到了这个错误 __init__() got an unexpected keyword argument 'instance' 每当我尝试发送带有为 inlineformset_factory 指
我是一名优秀的程序员,十分优秀!