PythonDjango
Published
Updated
【Django】.filter()でSlugFieldを指定した場合のエラー
この記事は前ブログに投稿(2020/6/15)したものです。
エラー Related Field got invalid lookup: が出た
原因
.filterでは複数のオブジェクトを取ってくることを想定している為、pkやslugは入らないらしい。
発生状況
テーブル
Authors:著者 複数のbooksを持つ。 Books:本 一つの著者を持つ。
models.py
class Authors(models.Model):
name = models.CharField(max_length=255)
slug = models.SlugField(unique=True, max_length=255)
class Books(models.Model):
title = models.CharField(max_length=255)
author = models.ForeignKey(Authors, on_delete=models.PROTECT)
views.py
slug = 'dazai'
books = Books.objects.filter(author__slug=slug)
解決法
SlugFieldからCharFieldに変更する。