Queryset только позволяет мне выбрать только одну таблицу полей в объединении - PullRequest
0 голосов
/ 04 июня 2019

У меня есть две таблицы, но я просто пытаюсь получить только dNm из таблицы T (при объединении), но вместо этого я могу получить только поля из TSF.

У меня есть файл моделей: 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>>

Тем не менее, в псевдо sql позволяет только следующее:

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

Мои views.py:

def viewed(request):
    AUS = TSF.objects.filter(FKToTld__FKToUser=request.user).values('dNm')
    return render(request, 'file.html', {
         'ATFS':ATFSs
    })

Вывод в шаблон

{{ t.dNm }}

ОБНОВЛЕНИЕ Теперь это не выдает ошибку на странице, а отправляет кучу пробелов.

Что я здесь не так делаю?

Ответы [ 2 ]

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

Используйте values('FKToTld__dNm') вместо values('dNm')

def viewed(request):
    AUS = TSF.objects.filter(FKToTld__FKToUser=request.user).<b>values('FKToTld__dNm').order_by('FKToTld__dNm').distinct()</b>
    return render(request, 'file.html', {
         'ATFS':ATFSs
    })

и в своем шаблоне

{% for instance in ATFS %}
    {{ instance.FKToTld__dNm }}
{% endfor %}
0 голосов
/ 04 июня 2019

values() возвращает Queryset словарей. Вы можете проверить здесь для получения дополнительной информации.

Вы можете сделать что-то вроде этого:

views.py

AUS = TSF.objects.filter(FKToTld__FKToUser=request.user).values('FKToTld__dNm').disctinct()

template.html

{% for key, value in ATFS.items %}
    {{ key }}: {{ value }}
{% endfor %}
...