Ошибка значения: поле ‘id’ при фильтрации данных модели на основе пользователя

#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