Фильтр запроса не работает при поиске по внешнему ключу в Django - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть 2 класса в models.py - Users и authUser - у 1st есть информация, связанная с приложением, а у 2nd общая информация о пользователе, и оба связаны с внешним ключом в имени пользователя.

Я получаю информацию о запросе пользователя из 'request.user.username' и пытаюсь выполнить поиск в своей таблице пользователей, чтобы получить информацию, относящуюся к приложению, на основе зарегистрированного пользователя. Он возвращает пустой набор запросов.

Я пробовал -

print(Users.objects.filter(username__username = request.user.username))
----xx---
print(Users.objects.filter(username = request.user.username))
----xx---
print(Users.objects.filter(Q(username__username = request.user.username)))
----xx---
print(Users.objects.get(username__username = request.user.username))

Четный -

tmp = (Users.objects.all())
for each in tmp:
    print(each.username)
    ----xx---
    print(each.username__username)

models.py

class Users(models.Model):
    userid = models.AutoField(db_column='UserID', primary_key=True)  # Field name made lowercase.
    username = models.ForeignKey('AuthUser', models.DO_NOTHING, db_column='Username', unique=True)  # Field name made lowercase.
    ownedfridges = models.TextField(db_column='OwnedFridges', blank=True, null=True)  # Field name made lowercase.
    friendedfridges = models.TextField(db_column='FriendedFridges', blank=True, null=True)  # Field name made lowercase.
    personalnotes = models.TextField(db_column='PersonalNotes', blank=True, null=True)  # Field name made lowercase.
    eff_bgn_ts = models.DateTimeField()
    eff_end_ts = models.DateTimeField()

    class Meta:
        managed = False
        db_table = 'Users'

class AuthUser(models.Model):
    password = models.CharField(max_length=128)
    last_login = models.DateTimeField(blank=True, null=True)
    is_superuser = models.IntegerField()
    username = models.CharField(unique=True, max_length=150)
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=150)
    email = models.CharField(max_length=254)
    is_staff = models.IntegerField()
    is_active = models.IntegerField()
    date_joined = models.DateTimeField()

    class Meta:
        managed = False
        db_table = 'auth_user'

просмотров.py -

def home(request):
    current_user = request.user
    print(request.user)
    print(Users.objects.filter(username__username = request.user.username))

    print("---------------------------------------------------------")

Я работаю с пользователем test1 и ожидаемый результат равен Queryset<[<Users: Users object (1)>]>, тогда как я получаю Queryset<[]>

...