2016-04-20 5 views
1

я мог бы глупо не найти правильные ключевые слова, чтобы искать, но вот актуальная проблема:
Я пытаюсь выбрать значения базы данных путем объединения двух различных моделей в Django.
Рассмотрим следующий models.py:Присоединяйтесь две модели в Django фильтр

class Token(models.Model): 
    userid = models.TextField() 
    access_token = models.TextField() 
    refresh_token = models.TextField(default='None', null=True) 

class File(models.Model): 
    userid = models.ForeignKey(Token, on_delete=models.CASCADE) 
    name = models.TextField() 
    link = models.TextField() 
    size = models.BigIntegerField() 

Сейчас я хотел, чтобы все файлы из File с их соответствующими access_token и userid.
я попытался сделать следующее:

data = File.objects.filter(name__startswith='Dummystring') 

Как получить access_token в этом случае?

ответ

1

Используйте values или values_list, чтобы присоединиться к таблицам и получить значения. Использовать __ to do field lookups:

data = File.objects.filter(name__startswith='Dummystring') \ 
        .values_list('userid__access_token', 'userid__userid') 
+0

Блестящий, спасибо (+1). Я не знал, что вы можете выполнять поиск по полю в функции 'values ​​()'. Примите ваш ответ в ближайшее время и полюбите «Django» (был больше «парнем PHP»). – Jan

+0

Короткое наблюдение: теперь результат выглядит примерно так: '' userid__access_token ": 'test1234'', могу ли я избавиться от префикса' userid__'? – Jan

+1

Это был бы вопрос: http://stackoverflow.com/questions/10598940/django-rename-items-in-values. Вы можете просто использовать 'values_list', если хотите только одно или два значения, правильно? Это даст вам список кортежей в основном. –

Смежные вопросы