FrameWork/Django

8월 10일(수) 검색필터 Q

print(blue) 2022. 8. 10. 17:45

☝🏻 Foreignkey로 연결한 db 필드에서 검색하기

1. 디비 구조

#core/models.py
# 유저 필드 함수
class User(AbstractUser):
    username = models.CharField(max_length=10, blank=False, null=False, unique=True, verbose_name="회원아이디") # 아이디
    nickname = models.CharField(max_length=10, blank=False, null=False, unique=True, verbose_name="닉네임")# 닉네임
    name = models.CharField(max_length=10, blank=False, null=False, verbose_name="회원이름") #이름
    bio = models.TextField(verbose_name='자기소개') # 바이오
    
    # like_room = models.ManyToManyField('Room', blank=True, related_name='관심 목록') # 관심 목록
    # join_room = models.ManyToManyField('Room', blank=True, related_name='가입 목록') # 가입 목록

    create_at = models.DateTimeField(verbose_name='date joined', auto_now_add=True) # 가입한 날짜
    last_login = models.DateTimeField(verbose_name='last login',auto_now=True) # 마지막 로그인
#room/models.py
class Room(models.Model):
    title = models.CharField(max_length=50, verbose_name="제목") #제목
    sub_title = models.CharField(max_length=100, blank=True, verbose_name="부제목") #부제목
    content = models.TextField(verbose_name="내용") #콘텐츠
    create = models.DateTimeField(verbose_name='작성일', auto_now_add=True) #작성일

    room_owner = models.ForeignKey(User, null=True, blank=True, on_delete=models.CASCADE, verbose_name="방장") #방장
    room_password = models.CharField(max_length=5, default=None, verbose_name="방비밀번호") #방비밀번호

 

User 의 username , Room의 room_owner 

기존 방법 : Q(필드 이름__icontains=q)

해결 방법 : Q(필드 이름__왜래키필드이름__icontains=q)

 

 

django foreignkey model 검색기능 ( icontains )

문제 상황: ForeignKey로 연결한 db 필드에서 검색을 하고 싶다.db구조는 이렇다. Accessor의 name 필드를 Nac의 user에 넣도록 되어있다.그리고 홈페이지에서는 Nac 기록들이 나오며, 이 기록들에 대하여

velog.io