Django를 사용하는 방법을 탐색 중이며 Django 앱에서 두 가지 모델을 만들었습니다.
from django.db import models
#first model
class Person(models.Model):
name = models.CharField(max_length=40)
email = models.CharField(max_length=100)
title = models.CharField(max_length=100)
image = models.CharField(max_length=200)
def __str__(self):
return self.name
#second model
class Skill(models.Model):
person = models.ForeignKey(Person)
skill = models.CharField(max_length=60)
years = models.CharField(max_length=40)
def __str__(self):
return self.skill, self.person
첫 번째 모델은 Person 이고 두 번째 모델은 Skill 입니다. 이제 관계는 각 사람이 많은 기술을 가질 것이라는 것입니다.
이제 데이터로 데이터베이스를 업데이트 할 수 있으며 사이트의 관리 섹션도 잘 작동합니다.
Django Shell에서 다음 명령을 실행합니다.
Skill.object.all()
그리고 내가 얻는 것은 다음과 같은 오류입니다.
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\db\models\query.py", line 235, in __repr__
return '<QuerySet %r>' % data
File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\db\models\base.py", line 572, in __repr__
u = six.text_type(self)
TypeError: __str__ returned non-string (type tuple)
또는 명령을 시도하면 :
Skill.objects.get(pk=1)
나는 얻다:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\db\models\base.py", line 572, in __repr__
u = six.text_type(self)
TypeError: __str__ returned non-string (type tuple)
그러나 다음과 같은 명령을 실행하면
Skill.objects.get(skill='Photoshop').person.name
나는 "Photoshop"기술을 가진 사람의 이름을 얻습니다.
나는 여기서 내가 뭘 잘못하고 있는지 이해하려고 노력하고있다. 이런 식으로 외래 키를 사용하여 테이블을 쿼리하면 안 될까요? 아니면 내가 뭔가 잘못하고있을 수도 있습니다.
글쎄, 마지막으로 내가 쿼리하고 싶은 것은 주어진 이름이나 기본 키를 가진 Person의 모든 기술 을 찾고 싶다는 것 입니다.
__str__
반환해야합니다 str
. 그래서 이렇게 변경하십시오
return self.skill, self.person
...에
return "%s-%s" %(self.skill, self.person.name)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다