작성
·
204
0
아래 코드에서 db_table="songs"는 테이블 이름에서 따온거 같은데 app_lable = "melon"은 어떻게 가져온 것인가요?? melon-20230906.sqlite3에서 앞글자만 가져와도 되는 것인가요??
Song.objects 부분에서 Song에 선언된 objects가 없다고 에러가 나는데 왜 나는지와 해결방법 알수있을까요?
`
class Song(models.Model):
id = models.AutoField(primary_key=True)
가수 = models.CharField(max_length=100)
곡명 = models.CharField(max_length=200)
곡일련번호 = models.IntegerField()
순위 = models.IntegerField()
앨범 = models.CharField(max_length=200)
좋아요 = models.IntegerField()
커버이미지_주소 = models.URLField()
class Meta:
db_table = "songs"
app_label = "melon"
def index(request):
query = request.GET.get('query', '').strip()
song_list = Song.objects.all()
if query:
song_list = song_list.filter(
Q(곡명__icontains=query) | Q(가수__icontains=query)
)
return render(request, template_name="index.html", context={"song_list": song_list, "query": query})
`
답변 2
0
안녕하세요.
장고 모델 클래스는 반드시 app_label 지정이 필요하구요.
현재 장고 앱을 생성한 상황은 아니라서요. 임의의 문자열로 app_label 을 지정한 상황입니다. "melon" 이 아닌 다른 문자열을 지정하셔도 상관없습니다.
향후에 장고 프로젝트를 만드시고, 장고 앱을 생성하시고 나서, 장고 앱 내에서 장고 모델을 생성하실 때에는 모델 클래스에 Meta.app_label 은 자동 지정될 것입니다.
--
그리고, "Song.objects 부분에서 Song에 선언된 objects가 없다고 에러가 나는데" 부분을 스크린샷으로 상황을 보여주시겠어요? 알려주신 설명 만으로는 현재 상황이 정확히 파악이 안 되어서요. :-)
살펴보시고 댓글 부탁드립니다.
화이팅입니다.
현재 vscode에서 pylint를 활성화시키신 듯 한데요.
pylint는 파이썬 코드 실행과 별개로, 파이썬 코드를 검사해주는 도구입니다. pylint는 에러는 파이썬 실행 시의 에러와는 다릅니다.
pylint 툴이 django에 대한 룰을 몰라서, Song 모델 클래스에 objects 멤버가 없다고 오해하고 있는 상황이구요.
pylint-django 라이브러리를 설치하시고, vscode의 pylint 실행 옵션에서 --load-plugins=pylint_django 옵션을 지정하여 pylint에게 django 룰을 알려주시면 해결이 되실 듯 보입니다.
.vscode/settings.json 파일에 설정을 지정해주셔야 하는 데요. 그런데 제 환경에서 pylint 옵션을 테스트해봤는 데, 옵션명이 예전과는 달라진 듯 보입니다.
검색해보시면 아래처럼 설정하라는 포스팅이 많은데요.
지금 제 환경에서는 위 옵션이 제공되지 않고, 아래와 같이 옵션명이 달라졌네요.
두 설정 다 한 번 적용해보시구요. 지원되지 않는 옵션이라면 Unknown Configuration Setting 라고 경고가 나오실 듯 합니다.
살펴보시고 댓글 남겨주세요. :-)