1

次のようなモデルを使用します。

class Folder(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField()

class CanAccess(models.Model):
    folder = models.ForeignKey(Folder)
    user = models.ForeignKey(User)

class Image(models.Model):
    folders = models.ManyToManyField('Folder')
    title = models.CharField()

ユーザーがアクセスできるすべての画像を見つける必要があります。

私はこれを試しましたが、うまくいきません:

images=Image.objects.filter(folders__canaccess_set__user=current_user)

FieldErrorDjango がパーツを検索すると、 が表示されますcanaccess_set

そのようなクエリを作成する最良の方法は何ですか?

4

2 に答える 2

2

_setルックアップを行うときは必要ありません。

Image.objects.filter(folders__canaccess__user=current_user)
于 2012-06-15T12:54:16.550 に答える
0

わかりました、ここにある情報:

http://bitkickers.blogspot.dk/2010/04/django-manytomany-error-cannot-resolve.html

モデルの読み込み順序がこの種のエラーを引き起こす可能性があることを示したので、models.py ファイルを次の順序から変更しました。

class Image(models.Model):
    folders = models.ManyToManyField('Folder')
    title = models.CharField()

class Folder(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField()

class CanAccess(models.Model):
    folder = models.ForeignKey(Folder)
    user = models.ForeignKey(User)

この順序で:

class CanAccess(models.Model):
    folder = models.ForeignKey("Folder")
    user = models.ForeignKey(User)

class Image(models.Model):
    folders = models.ManyToManyField('Folder')
    title = models.CharField()

class Folder(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField()

そして、それは実際に問題を解決しているようです。

于 2012-06-16T19:35:15.973 に答える