Я создаю приложение, которое позволит создавать пользователей, только если они принадлежат к определенной группе (все пользователи, принадлежащие к этой группе, хранятся в так называемой «вторичной» базе данных). «Вторичный» имеет столбец, который называется «personalid», а также мой пользователь, которого я хочу проверить.
Что я хочу сделать, это проверить personalid
поле с secondary
, если personalid
существует в secondary
, тогда пользователь может быть создан, иначе вы получите сообщение об ошибке! Какие-либо предложения? Вот важные фрагменты кода, которые показывают, как я это делаю:
forms.py:
class CustomUserCreationForm(forms.Form):
username = forms.CharField()
email = forms.EmailField()
personalid = forms.IntegerField()
password1 = forms.CharField()
password2 = forms.CharField()
def clean_username(self):
username = self.cleaned_data['username'].lower()
r = CustomUser.objects.filter(username=username)
if r.count():
raise ValidationError("There is a user with that username already!")
return username
def clean_email(self):
email = self.cleaned_data['email'].lower()
r = CustomUser.objects.filter(email=email)
if r.count():
raise ValidationError("There is already a user with that email!")
return email
def clean_password2(self):
password1 = self.cleaned_data.get('password1')
password2 = self.cleaned_data.get('password2')
if password1 and password2 and password1 != password2:
raise ValidationError("Password don't match!")
return password2
def save(self, commit=True):
customuser = CustomUser.objects.create_user(
self.cleaned_data['username'],
email = self.cleaned_data['email'],
password = self.cleaned_data['password1'],
personalid = self.cleaned_data['personalid']
)
return customuser
CustomUserCreationForm (UserCreationForm
) класс:
class Meta:
model = CustomUser
fields = ('username', 'email','personalid')
CustomUserChangeForm (UserChangeForm
) класс:
class Meta:
model = CustomUser
fields = UserChangeForm.Meta.fields
settings.py :
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'default',
'USER': 'default',
'PASSWORD': 'default_password',
'HOST': 'my_host',
'PORT': 'my_port'
},
'secondary': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'secondary',
'USER': 'secondary_user',
'PASSWORD': 'secondary_password',
'HOST': 'my_secondary_host',
'PORT': 'my_secondary_host'
}