У меня есть приложение с 2 уровнями пользователей; Суперпользователь и персонал. Superuser войдет в это приложение и создаст нового пользователя и назначит пользователю разрешения для суперпользователя или персонала, но они не войдут в систему с помощью администратора Django по умолчанию, они будут входить в пользовательский админ. Как показать флажки разрешения в моей форме и как сохранить их для создаваемого нового пользователя? Это просто нормальный флажок или есть что-то, что мне нужно переопределить, чтобы выполнить это?Разрешения Django за пределами администратора и в пользовательской форме
Вот мой CreateUserForm, как сейчас.
class CreateUserForm(forms.Form):
username = forms.EmailField(max_length=50)
email = forms.EmailField()
first_name = forms.CharField(max_length=150)
last_name = forms.CharField(max_length=150)
password1 = forms.CharField(max_length=30, widget=forms.PasswordInput(render_value=False), label='Password')
password2 = forms.CharField(max_length=30, widget=forms.PasswordInput(render_value=False), label='Password Confirmation')
address_1 = forms.CharField(max_length=50)
address_2 = forms.CharField(max_length=50)
city = forms.CharField(max_length=50)
province = forms.CharField(max_length=2)
country = forms.CharField(max_length=50)
postal_code = forms.CharField(max_length=10)
work_phone = forms.CharField(max_length=20)
mobile_phone = forms.CharField(max_length=20)
fax = forms.CharField(max_length=20)
url = forms.CharField()
comments = forms.CharField(widget=forms.Textarea)
def clean_username(self):
try:
User.objects.get(username=self.cleaned_data['username'])
except User.DoesNotExist:
return self.cleaned_data['username']
raise forms.ValidationError("Sorry, this username has already been taken. Please choose another.")
def clean_email(self):
try:
User.objects.get(email=self.cleaned_data['email'])
except User.DoesNotExist:
return self.cleaned_data['email']
raise forms.ValidationError("Sorry, this email has already been taken. Please choose another.")
def clean(self):
if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data:
if self.cleaned_data['password1'] != self.cleaned_data['password2']:
raise forms.ValidationError("You must type the same password each time.")
if ' ' in self.cleaned_data['username']:
raise forms.ValidationError("username must not contain spaces")
return self.cleaned_data
def save(self):
new_user = User.objects.create_user(
username = self.cleaned_data['username'],
email = self.cleaned_data['email']
)
new_user.first_name = self.cleaned_data['first_name']
new_user.last_name = self.cleaned_data['last_name']
new_user.set_password(self.cleaned_data['password'])
new_user.is_active = True
new_user.save()
new_profile = UserProfile(
# TODO:
)
Благодаря
Дэн, у меня есть куча других пользовательских материалов в этой форме, а также пользовательская пользовательская модель для каждого пользователя. Разве это не проблема? – JeffC
Трудно сказать, не видя кода; возможно, обновите сообщение с тем, что у вас есть. –
Готово. Он еще не завершен, может быть, 90%, но этого должно быть достаточно, чтобы дать представление. – JeffC