PrismCube
【Django】.filter()でSlugFieldを指定した場合のエラー

【Django】.filter()でSlugFieldを指定した場合のエラー

1 min read
Table of Contents

エラー Related Field got invalid lookup: が出た

原因

.filter では複数のオブジェクトを取ってくることを想定している為、pk や slug は入らないらしい。

解決法

SlugField から CharField に変更する。

発生状況

テーブル

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)