创建表单时,我希望在模型上使用一个字段作为标签,以便与我正在更新的另一个字段一起使用。
我用一个新的___init____方法覆盖了BaseModelFormSet,如下所示:
class BaseMyFormSet(BaseModelFormSet):
def __init__(self, *args, **kwargs):
super(BaseMyFormSet, self).__init__(*args, **kwargs)
for form in self.forms:
form.fields['value'].label = ???
如何引用模型中的其他字段,以便将其用作标签值?
(或者,如果有更好的方式以我需要的方式覆盖标签,那将非常有用。)
感谢。
答案 0 :(得分:1)
我对您的目标并不完全清楚,您是否尝试将字段的值用于模型的特定实例,或者您只是尝试使用模型字段自己的名称或模型定义中的help_text属性?
我猜你想做后者。如果是这样,您可以在 init 方法中访问此类型号信息:
for form in self.forms:
opts = self.model._meta
field = opts.get_field("yourfield")
form.fields['value'].label = field.name
或者
form.fields['value'].label = field.help_text
答案 1 :(得分:1)
我发布了这个问题,因为我有一个包含两个字段的模型:
LabelField
ValueField
我希望显示一个使用“LabelField”作为标签的表单,同时允许用户更新“ValueField”。我的第一个想法是以某种方式将“LabelField”的值分配给“ValueField”的label属性。
我最终做的是将“LabelField”的“禁用”属性设置为true:
form.fields['labelfield'].widget.attrs['disabled'] = True
这允许我在不让用户更新它的情况下显示“labelfield”。我可以想到至少另外两种方法来实现同样的目标,但鉴于我对Django等人的熟悉程度,这就是我现在所使用的。