我有这个form.py:
from shortcut import get_timezone
class HostCreateForm(forms.ModelForm):
def save(self, commit=True):
host1 = super(HostCreateForm, self).save(commit=False)
user = request.user.username
host1.timezone=get_timezone(user=user)
host1.save()
return host1
class Meta:
model = Host
widgets = {
'user': forms.HiddenInput(),
'timezone': forms.HiddenInput()
}
- timezone是 model.py 中定义的主机模型的输入隐藏字段。
- get_timezone方法:(定义如下)
def get_timezone(user=None):
timezone = Userprofile.objects.all()
timezone = timezone.get(user=user)
return timezone.timezone
而 UserProfile 是也在 models.py 中定义的另一个模型,用于存储用户注册时的时区、名字和姓氏。我的主要动机是从 Userprofile 模型中获取这个默认时区并将其传递给隐藏的输入字段(时区)。我尝试使用上面的代码(host1.timezone=get_timezone(user=user) 编写在 save 方法中调用 get_timezone 方法,它应该为登录用户返回时区表单 Userprofile 模型,但它没有工作。
我认为主要问题是在从 save 方法调用 get_timezone 方法时传递请求用户的名称。我无法做到这一点。从当前场景中,我收到以下错误: 未定义全局名称“请求”
任何帮助都将是可观的