Запросить две таблицы в Django для аутентифицированного пользователя - PullRequest
1 голос
/ 04 июня 2019

Я пытаюсь запросить 2 таблицы в моей модели django - но у меня возникли некоторые проблемы при формулировании синтаксиса.

models.py

class T(models.Model): 
    emailVerified = models.EmailField(max_length=50) 
    dNm = models.CharField(max_length=40,unique=True)
    FKToUser = models.ForeignKey('auth.user', default=None, on_delete=models.PROTECT)  

class TSF(models.Model):
    httpResponse = models.IntegerField(validators=[MaxValueValidator(3)])
    FKToT = models.ForeignKey('T', on_delete=models.PROTECT)

В обычном (псевдо) sql я пытаюсь сделать что-то вроде:

SELECT dNm
FROM T, TSF
WHERE T.id=TSF.FKToT
AND T.FKToUser=<<THE CURRENTLY SIGNED IN USER>>

У меня просто есть некоторые проблемы с формулировкой, как написать это в django orm.

Может кто-нибудь помочь? Спасибо

1 Ответ

2 голосов
/ 04 июня 2019

Вы пробовали это,

TSF.objects.filter(FKToT__FKToUser=request.user)

Это вернет объект TSF Queryset, который связан с текущим вошедшим пользователем.

Вы можете использовать values() для извлечения определенных полей из QuerySet, если хотите.


Обновление -1

что это за обозначение: FKToT__FKToUser делает?

__ (двойное подчеркивание) - это поиск поля в Django (Вы можете прочитать больше здесь, Django Полевой поиск - Django Doc )

Но здесь __ - это что-то , просматривающее отношение , Поиск, охватывающий отношения - Django Doc что приводит к SQL JOIN

...