【问题标题】:Nested foreignkey query嵌套外键查询
【发布时间】:2012-06-15 12:32:02
【问题描述】:

使用这样的模型:

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)

当 Django 查找 canaccess_set 部分时,我得到一个 FieldError

进行此类查询的最佳方法是什么?

【问题讨论】:

    标签: django foreign-keys nested


    【解决方案1】:

    查找时不需要_set

    Image.objects.filter(folders__canaccess__user=current_user)
    

    【讨论】:

    • 我尝试不使用 _set,但收到错误:无法将关键字“canaccess”解析为字段。选项是[声明的模型字段列表]
    【解决方案2】:

    好的,在这里找到的信息:

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

    表示模型的加载顺序可能会产生这种og错误,所以我从这个顺序更改了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()
    

    这实际上似乎解决了问题。

    【讨论】:

      猜你喜欢
      • 2013-07-07
      • 1970-01-01
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 2018-06-30
      • 2016-01-19
      • 1970-01-01
      相关资源
      最近更新 更多