class BusinessMemberInlineForm(ModelForm):
helper = FormHelper()
username = 'no user found yet'
def __init__(self, *args, **kwargs):
super(BusinessMemberInlineForm, self).__init__(*args, **kwargs)
if hasattr(self.instance, 'user'):
self.username = self.instance.user.username
self.helper.layout = Layout(
Div(
Div(
Column(
HTML('<b>%s</b>' % self.username)
),
Column(
'can_post'
),
Column(
'is_admin'
),
Column(
'DELETE'
),
'id',
'businessprofile',
css_class="span12"
),
css_class="row-fluid"
),
)
class Meta:
model = BusinessMember
fields = ['can_post', 'is_admin']
输出如下内容:
no user found yet [x] can post? [x] is admin? [ ] remove?
no user found yet [ ] can post? [ ] is admin? [ ] remove?
而不是:
Admin [x] can post? [x] is admin? [ ] remove?
Test user [ ] can post? [ ] is admin? [ ] remove?
这里有一些我不理解的东西。它似乎只保存了创建的Cripsy布局的最后一个实例(一个空模型),因此它只打印“尚未找到用户”。
我完全糊涂了,我添加了print self.username
并且值都设置正确。
我应该如何为动态标签添加动态标签?
答案 0 :(得分:0)
唉!
我最终必须制作一个自定义小部件才能恰当地显示每个字段中的名称,这比应该的情况要难得多!
来自django导入表格
my utils / widgets.py
class DisplayTextWidget(forms.Widget):
display_value = ""
def __init__(self, attrs=None, display_value="Nothing here!"):
self.display_value = display_value
super(DisplayTextWidget, self).__init__(attrs)
def render(self, name, value, attrs=None):
return self.display_value
然后在forms.py
中self.fields['user'].widget = DisplayTextWidget(display_value=self.instance.user.username)