У меня проблема с аутентификацией в django с расширенной моделью пользователя. Я хочу, чтобы пользователь проходил аутентификацию с помощью номера клиента, имени пользователя и пароля.
Это мои модели:
class Mandant(models.Model):
Mandant_id = models.AutoField('ID', primary_key= True)
Mandant_accn= models.CharField('Kundennummer', max_length=10)
Mandant_name = models.CharField('Bezeichnung', max_length=200)
Mandant_street = models.CharField('Straße', max_length=200, null=True, blank=True)
Mandant_zip = models.CharField('PLZ', max_length=10, null=True, blank=True)
Mandant_city = models.CharField('Ort', max_length=200, null=True, blank=True)
Mandant_iban = models.CharField('IBAN', max_length=200, null=True, blank=True)
Mandant_bic = models.CharField('BIC', max_length=200, null=True, blank=True)
Mandant_ustid = models.CharField('UstID', max_length=200, null=True, blank=True)
Mandant_vf = models.DateTimeField('Gültig von', default=now)
Mandant_vu = models.DateTimeField('Gültig bis', null=True, blank=True)
Mandant_ia = models.DateTimeField('Hinzugefügt am', auto_now=True)
Mandant_deleted = models.BooleanField('Gelöscht', default=False)
def __str__(self):
return self.Mandant_name
class Meta:
app_label ="meas"
ordering = ['Mandant_ia']
class Meas_User(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
mandant_id = models.ForeignKey(Mandant, on_delete=models.CASCADE)
Я расширил пользовательскую модель по умолчанию django на одно поле в моей модели Meas_User.
Теперь я попытался написать логин просмотр для пользователей моего приложения. Но я не понимаю, как выполнить запрос, подобный следующему SQL:
SELECT User, Mandant FROM [User] INNER JOIN (Mandant INNER JOIN MEAS_user ON Mandant.Mandant_ID = MEAS_user.Mandant_ID) ON User.ID = MEAS_user.user_ID WHERE (((User.username)="lorem Ipsum") AND ((Mandant.Customer_Number)="1234"));
Я пробовал функцию select_related (), но безуспешно. Мой желаемый результат состоит в том, чтобы пользователь мандата - идентифицированный введенным номером клиента - (если применимо) проверил введенный пароль на следующем шаге.