#python #django
#python #django
Вопрос:
Как мне вернуть объекты на основе пользователя, который внес запись в модель? Вот что я пробовал ниже, но я получаю сообщение об ошибке:
models.py
class Csv(models.Model):
file_name = models.FileField(upload_to='csvs', max_length = 100)
public = models.BooleanField(default = False)
user = models.ForeignKey(User, on_delete = models.CASCADE, null = True)
name = models.CharField(max_length = 100)
library = models.CharField(max_length = 100, null = True)
def __str__(self):
return "File id: {}".format(self.id)
запрос
from .models import Csv
x = Csv.objects.get(user = "site_manager")
возвращает ошибку в описании
from .models import Csv
x = Csv.objects.get(library = "example library")
возвращает файл из базы данных, как и предполагалось. Почему это не работает, когда я выполняю поиск на основе имени пользователя?
Ответ №1:
Причина в том, что поле user
является внешним ключом, поэтому критерии поиска должны указывать, какой столбец в модели User
должен соответствовать критериям поиска:
from .models import Csv
x = Csv.objects.get(user__username = "site_manager")
В этом случае двойное подчеркивание указывает, что мы ссылаемся на поле в экземпляре модели, на которую указывает поле . username
User
user