【发布时间】:2010-11-26 04:18:35
【问题描述】:
我正在尝试控制非超级用户帐户无法保存具有超过 2 天的日期属性的 ChannelStatus 模型输入的管理项条目。我需要获取用户,以便我可以检查请求是普通用户还是超级用户,但无法实现。
我已经尝试过“request.user.is_superuser”、“user.is_superuser”、“self.user.is_superuser”和“self.request.user.is_superuser”,但似乎都不起作用。
class ChannelStatusValidForm(forms.ModelForm):
class Meta:
model = ChannelStatus
def clean(self):
cleaned_data = self.cleaned_data
mydate = cleaned_data.get("date")
today = date.today()
if request.user.is_superuser:## here is the problem
return cleaned_data
elif (today - timedelta(days=2)) > mydate:
raise forms.ValidationError("Invalid date, maximum 2 days allowed.")
else:
return cleaned_data
【问题讨论】:
-
那是因为你没有
request对象。您需要为表单验证函数提供一个RequestContext对象。 -
我尝试了 class ChannelStatusValidForm(forms.ModelForm,request): 但它似乎不起作用。
-
是的,我试过谷歌搜索,但我找不到,或者想出如何发送它。我确信我已经看到它完成了。相信很快会有人帮你解决的!
-
ts 在表单中获取请求对象的问题。丹尼尔在这里回答了。 stackoverflow.com/questions/1057252/…
-
@harshh - 很棒的发现。我知道我在某处见过它,我想答案可能就在这里!
标签: django validation django-admin django-forms