4

次のモデルクラスを想定します。

 class Bookmark(models.Model):   
     owner = models.ForeignKey(UserProfile,related_name='bookmarkOwner')
     parent = models.ForeignKey(UserProfile,related_name='bookmarkParent')
     sitter = models.ForeignKey(UserProfile,related_name='bookmarkSitter')

sitterオブジェクトからオブジェクトを取得するにはどうすればよいownerですか?

user = UserProfile.objects.get(pk=1)

UserProfile.objects.filter(bookmarkOwner=user)

空を返し、変数tupleを指定できません。sitter

4

2 に答える 2

8

ループの使用を避けたい場合は、次のようなことができると思います。

pks = some_user_profile.bookmarkOwner.values_list('sitter', flat=True)
sitters = UserProfile.objects.filter(pk__in=pks).all()

または、多対多フィールドを設定してthroughパラメーターを使用して実験することもできます。Djangoのドキュメントを参照してください:https ://docs.djangoproject.com/en/2.0/ref/models/fields/#manytomanyfield

于 2012-12-23T14:03:17.217 に答える
2

やったほうがいい

objs = Bookmark.objects.filter(owner=user)
# This will return all bookmarks related to the user profile.

for obj in objs:
    print obj.owner # gives owner object
    print obj.parent # gives parent object
    print obj.sitter # gives sitter object

ユーザープロファイルのブックマークオブジェクトが1つしかない場合(複数のエントリはありません)。次に、.get代わりにメソッドを使用する必要があります(単一のオブジェクトを返します)。

obj = Bookmark.objects.get(owner=user)
print obj.owner
print obj.parent
print obj.sitter
于 2012-12-23T13:19:46.423 に答える