18

私は次のモデルを持っています:

class Tag(models.Model):
    tag_name = models.CharField(max_length=250)
    tagcat = models.ForeignKey('TagCat')

class Subject(models.Model):
    user = models.ManyToManyField(User)
    tags = models.ManyToManyField(Tag)

class TagCat(models.Model):
    cat_name = models.CharField(max_length=100)

だから私はタグを持っている件名を持っています。サブジェクトとその適切なタグをループしたいので、正しいビューを構築しようとしています。これまでのところ、私は持っています:

def home(request):
    user1 = Subject.objects.filter(id=1)
    print(user1.tags.all())

この print ステートメントを介してユーザーのタグを取得することを期待しますが、代わりにエラーが発生します

「QuerySet」オブジェクトには属性「tags」がありません

それぞれのタグを使用して「サブジェクト」オブジェクトを取得し、それらをテンプレートに渡すにはどうすればよいですか?

(理想的にはすべての被験者。トラブルシューティングのプロセスを簡素化するために、ここでは 1 つだけで行いました)

4

2 に答える 2

33

filterQuerySet(ご想像のとおり) を返します。get代わりに実行する必要があります。

user1 = Subject.objects.get(id=1)

Subjectが存在しない場合、Subject.DoesNotExist例外が発生します。また、何らかの方法で表示されるオブジェクトを単に取得していて、それが利用できない場合に 404 を返したい場合に便利なget_object_or_404ショートカットもあります。django.shortcuts

于 2010-11-30T22:44:12.813 に答える
3

QuerySet.get()渡された基準によって指定された単一のモデルを返すか、例外を発生させます。

于 2010-11-30T22:45:07.723 に答える