私はこの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 で定義されている別のモデルであり、登録時にユーザーの timezone 、姓名を保存するために使用されます。私の主な動機は、このデフォルトのタイムゾーンを Userprofile モデルから取得し、非表示の入力フィールド (タイムゾーン) に渡すことです。get_timezone メソッドを呼び出す save メソッドで記述された上記のコード (host1.timezone=get_timezone(user=user) を試してみましたが、ログインしたユーザーの Userprofile モデルからタイムゾーンを返す必要がありますが、うまくいきませんでした。
主な問題は、save メソッドから get_timezone メソッドを呼び出すときに、要求しているユーザーの名前を渡すことにあると思います。私にはそれができません。現在のシナリオから、次のエラーが発生しています: グローバル名 'request' が定義されていません
どんな助けもかなりのものになるでしょう