私は何をしようとしているのかを明確にするためにモデルを単純化しました。Django:多対多のオブジェクトへのアクセス多対多の関係
(アプリのチームでmodels.py)
from django.db import models
from django.contrib.auth.models import User
import datetime
class Team(models.Model):
users = models.ManyToManyField(User)
team_title = models.CharField(max_length=200)
team_description = models.CharField(max_length=200)
def __unicode__(self):
return self.team_title
(アプリの書類でmodels.py)
from django.db import models
import datetime
class Document(models.Model):
teams = models.ManyToManyField("Teams.Team", blank=True)
document_title = models.CharField(max_length=200)
document_description = models.TextField()
def __unicode__(self):
return self.document_title
に関連付けられているユーザのリストを取得している私は何を達成したいです最初に文書に関連するすべてのチームを取得し、その後、これらのチームに関連するすべてのユーザーを取得することによって、文書を作成します。 'クエリセット' オブジェクトが無属性 'ユーザ'
associated_users = current_document.items.all().users.all()
があります
私の試みは、これまでのところ、この
(アプリの書類でview.py)
from django.contrib.auth.models import User
from Documents.models import *
from Teams.models import *
def docUsers(request, doc_id):
current_document = Documents.objects.get(pk = doc_id)
associated_users = current_document.teams.all().users
....
エラーのようなものを行っています
エラー: 'QuerySet'オブジェクトには 'users'という属性はありません
associated_users = current_document.items.users.all()
エラー:は 'ManyRelatedManager' オブジェクトが属性 'ユーザ'
私はこれについて間違った道を進んでいないアムたのか?
私はまだ混乱しています。チームモデルとドキュメントモデルとの関連付けは、文書からチームへのものであり、他の方法ではありません(これは最も論理的なアプローチではありませんが、モデル構造を変更することはできません)。 – Finglish
@agf 1.いいえ、フィルター式の中で実際のモデル名を使用します。 2.いいえ、=を使用して、M2M/FK関係内の単一の要素をルックアップします。 [関係をまたぐルックアップ](https://docs.djangoproject.com/en/1.3/topics/db/queries/#lookups-that-span-relationships)を参照してください。 –
@Finglishあなたは両側から関係にアクセスできます。私がagfに与えたリンクを見てください。 –