Djangoを回避する方法を模索しています。私はDjangoアプリケーションで2つのモデルを作成しました。1対多関係の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
最初のモデルは、人であり、第2のモデルは、スキルあります。さて、この関係は、それぞれの人が多くのスキルを持つことになります。
私はデータでデータベースを更新できます。サイトの管理セクションも正常に動作します。 Djangoのシェル上
、私はコマンドを実行しよう:
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)
i:
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)
私は、次のようなコマンドを実行するただし場合:「Photoshopの」私はスキルを持っている人の名前を取得
Skill.objects.get(skill='Photoshop').person.name
ここで間違っていることを理解しようとしています。おそらく私はこの方法で外部キーを持つテーブルをクエリするはずがありませんか?または、私は何か間違っているかもしれません。
最後に質問したいのは、特定の名前または主キーを持つPersonのすべてのスキルを探したいと思っています。
には、上記のコードは、コピーが貼り付けられますが、よろしいですか? skill_set.all() ' – itzMEonTV
はいコードはコピー貼り付けされていますが、そこにはありません。 'return self.skill'の末尾にカンマがありません:( –
@itzmeontv残念ながらカンマがありましたが、実際にはカンマを削除して試しましたが、シェルを終了するまで変更が適用されなかったと思いますとにかく、コンマでどのようにコードを更新したのですか? –