我正在使用包含指定用户友情偏好的表单的django formset。
我的表单字段是:
siteuser_id = forms.IntegerField(widget=forms.HiddenInput())
subscribed = forms.BooleanField(required=False)
ally = forms.BooleanField(required=False)
enemy = forms.BooleanField(required=False)
目标是显示一个人的所有朋友以及该人在游戏中的状态。
当我在formset中显示表单时,我想显示该人的昵称(昵称不是唯一的,或者我只是使用它而不是siteuser_id)以及该人的友情偏好。
我尝试将用户名设为表单字段,但这使其可编辑,我只是希望它显示在表格中,而不是可编辑的。
帮助?
答案 0 :(得分:1)
只需将readonly
属性添加到字段中:
username = forms.CharField(widget=forms.TextInput(attrs={"readonly": "readonly"}))
使该字段不可编辑。
答案 1 :(得分:1)
听起来你不一定想要一个表单 - 你可以将对象中的数据传递给你的模板。
但是,如果您确实希望使用表单执行此操作,则可以为表单字段和子类widget
设置自定义Widget
。请参阅https://docs.djangoproject.com/en/dev/ref/forms/widgets/。
答案 2 :(得分:1)
这是我为此做的自定义小部件!
将它放在项目的widgets.py文件中:
from django.forms.widgets import Widget
class DisplayOnlyField(Widget):
def __init__(self,attrs=None):
self.attrs = attrs or {}
self.required = False
def render(self, name, value="", attrs=None):
try:
val = value
except AttributeError:
val = ""
return val
然后在你的views.py中,输入:
from projname.widgets import DisplayOnlyField
在现场,它将是:
user_name = forms.CharField(widget=DisplayOnlyField())
答案 3 :(得分:0)
如果您使用model formsets(或使用它们是一个选项),您可以访问模板中表单的instance
属性。
例如:
{% for form in formset %}
{{ form.instance.nickname }}
{{ form }}
{% endfor %}