0

私はDjangoチュートリアルで遊んでいて、別のモデルインスタンスに(外部キーを介して)関連付けられたモデルインスタンスのフィールドを取得しようとしています。これが私が意味することです:

モデルファイル:

from django.db import models

class Usercar(models.Model):
    make = models.CharField(max_length=200)
    model = models.CharField(max_length=200)
    year = models.DateTimeField('year of car')
    def __unicode__(self):
        return self.make

class Suggestcar(models.Model):
    usercar = models.ForeignKey(Usercar)
    make = models.CharField(max_length=200)
    model = models.CharField(max_length=200)
    year = models.DateTimeField('year of car')
    def __unicode__(self):
        return self.make

シェルでは、ユーザーカーに関連するサジェストカーのメーカーを取得しようとすると、次のようになります。

>>from django.utils import timezone
>>mycar1 = Usercar(make="Ford",model="Escort",year=timezone.now())
>>mycar1.save()
>>mycar1.suggestcar_set.create(make="Ford", model="Taurus", year=timezone.now())
>>mycar1.suggestcar_set.filter(id=1).make
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-    packages/django/core/management/commands/shell.pyc in <module>()
----> 1 mycar1.suggestcar_set.filter(id=1).make

AttributeError: 'QuerySet' object has no attribute 'make'

この mycar1.suggestcar_set.filter(id=1) の型を取得するにはどうすればよいですか? ありがとう!

4

1 に答える 1

2

filterその中のオブジェクトにアクセスしたい場合は、クエリセットを反復処理するか、最初の結果を取得する必要があります。

mycar1.suggestcar_set.filter(id=1)[0].make

オブジェクトを1つだけ返したい場合は、実際に使用する必要がありますget

mycar1.suggestcar_set.get(id=1).make
于 2013-06-01T20:10:36.980 に答える