Как проверить поле расширенного пользователя по вторичной (не по умолчанию) базе данных в Django? - PullRequest
0 голосов
/ 30 апреля 2020

Я создаю приложение, которое позволит создавать пользователей, только если они принадлежат к определенной группе (все пользователи, принадлежащие к этой группе, хранятся в так называемой «вторичной» базе данных). «Вторичный» имеет столбец, который называется «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'

}
...