我有一个表格,我需要显示我的项目以外的管理领域,有些领域不能编辑,但可以看到他们。你知道吗
要做到这一点,最好在中找到“AdminReadonlyField”django.contrib.admin管理员.helpers“问题是您不能这样做。你知道吗
我试图创建一些小部件来替换这个复杂的类,但是我不能让它与DateTiemField字段一起正常工作。你知道吗
class UserUpdateForm(forms.ModelForm):
"""
We need field "date_joined" can not be edited but can see them
"""
class Meta:
model = User
fields = ('first_name', 'last_name',
'email', 'date_joined', 'slug')
def __init__(self, user, *args, **kwargs):
kwargs['instance'] = user
super(UserUpdateForm, self).__init__(*args, **kwargs)
self.fields['date_joined'].widget = widgets.CMDateTimeText()
def clean_date_joined(self):
instance = getattr(self, 'instance', None)
if instance and instance.pk:
return instance.date_joined
else:
return self.cleaned_data['date_joined']
我的代码,有点不对劲。你知道吗
class CMDateTimeText(DateTimeBaseInput):
"""
A SplitDateTime Widget that has some admin-specific styling.
Hereda Field and Widget.
"""
format_key = 'DATETIME_FORMAT'
def __init__(self, attrs=None, format=None):
# Use slightly better defaults than HTML's 20x2 box
default_attrs = {'class': 'date_id'}
if attrs:
default_attrs.update(attrs)
super(CMDateTimeText, self).__init__(attrs=default_attrs, format=format)
def render(self, name, value, attrs=None):
if value is None:
value = ''
value = self._format_value(value)
final_attrs = self.build_attrs(attrs, name=name)
return format_html('<p{}>{}</p>', flatatt(final_attrs), conditional_escape(value))
结果图像:
你知道怎么做“AdminReadonlyField”“任何视图或窗体吗?你知道吗
所以在寻找了几个小时的各种解决方案之后,我发现了如何用Django的方法来解决这个问题。你知道吗
只需将属性
disabled
添加到表单中的字段(而不是小部件!)地址:而且很有效。。。Django正在考虑不保存该字段,如果有黑客篡改它,尽管它被禁用。仅适用于Django 1.9+。你知道吗
相关问题 更多 >
编程相关推荐