モデルのセットアップ方法があまり分かりません。これが役立つことがあります。
ログインフォーム:
from django import forms
class LoginForm(forms.Form):
username = forms.CharField(required = True)
password = forms.CharField(required = True)
ログインビュー:ユーザーが正常にログインしたとき
from .forms import LoginForm
from django.contrib.auth import authenticate
def login_view(request):
if request.method == "POST":
login_form = LoginForm(request.POST)
if login_form.is_valid():
cleaned_username = login_form.cleaned_data["username"]
cleaned_password = login_form.cleaned_data["password"]
user = authenticate(username = cleaned_username, password = cleaned_password)
# It might be worth putting the form processing into a method of the login form.
if user:
login(user)
return redirect("url_for_my_company_page")
else:
pass # user failed auth, send message back to user
else:
pass # form not valid, handle errors
else:
login_form = LoginForm()
return render(request, "template.html", {"login_form":login_form}
は今、彼らは会社のページにリダイレクトされます。つまり、
request.user
を使用すると、認証されたユーザーが取得されます。 (そうでなければ、それは 'AnonymousUser'を返します)。
あなたの会社ビュー:
class NewEmployeeForm(forms.ModelForm):
def __init__(self, company, *args, **kwargs):
self.company = company
super(NewEmployeeForm, self).__init__(*args, **kwargs)
self.fields['company'].initial = company
class Meta:
model = Employee
#fields...
def save(self):
Employee.objects.create(company = self.company)
:
def my_company_view(request):
user_company = request.user.company
# here you can put in your new_employee form
# the user_company can now be used
return render(request, "template.html", {"company": user_company}
あなたの新しい従業員のフォームのモデルフォーム(models.ModelForm
)を使用している場合、私はあなたがコンストラクタでフォームに変数を追加することができると思います
汎用フォーム(forms.Form
)だけを使用している場合は、user_company
変数を使用して従業員の会社を設定することができます。
希望すると便利です。
あなたのモデルがどのように設定されているかについてはあまりよく分かりませんが、 'self.request.user.company.employee_set.all()'のようなものが役に立ちますか?ユーザーが所属する会社のすべての従業員を返す – RHSmith159
これは、https://simpleisbetterthancomplex.com/tutorial/2016/06/27/how-to-use-djangos-built-in-login-systemに役立つかもしれません。 html – mbieren
こんにちは@RHSmith、はい私はMozille Djangoのチュートリアルと同様の方法でユーザーを管理していますので、ユーザーから会社に縛られたすべての従業員を見ることができます。しかし、新しい従業員のフォームを使用して、会社が唯一のものであることと、自動的にログインしているユーザーの1人として設定されていることを確認するのは不確かです。 – Nowandthen98