如何在 django 中获取所有 ForeignKey 的列表

Posted

技术标签:

【中文标题】如何在 django 中获取所有 ForeignKey 的列表【英文标题】:How to get a list of all ForeignKey's in django 【发布时间】:2015-10-29 13:09:49 【问题描述】:

我正在尝试使用会计创建一个简单的上传中心。 我有一个User 和一个File model 像这样:

class File(models.Model):
    name = models.CharField(max_length=100)
    path = models.CharField(max_length=255)
    short_discripton = models.TextField(max_length=500, null=False)
    upload_date = models.DateTimeField("Uploaded Date", auto_now_add=True)
    def upload_date(self):
        return timezone.datetime.now()
    def __unicode__(self):
        return self.name


class User(models.Model):

    username = models.CharField(max_length=25, null=False, blank=False)
    password = models.CharField(max_length=255, null=False, blank=False)
    user_path = models.CharField(max_length=255, null=False, blank=False)
    first_name = models.CharField(max_length=50, null=False, blank=False)
    last_name = models.CharField(max_length=60, null=True, blank=True)

    creation_date = models.DateTimeField("Register Date", auto_now_add=True)
    files = models.ForeignKey(File, null=True, blank=True)   
    def __unicode__(self):
        return self.userna

但是当我尝试使用以下方法检索文件时:

all_user_files = File.objects.get(pk=user.id)

虽然数据库中有更多文件,但它只返回其中一个文件(检查管理面板)。

当我使用另一种方式时:

user_all_files = user.files_set.all()

它会引发错误:

'User' object has no attribute 'files_set'

我真的很困惑。还有其他方法吗?

【问题讨论】:

【参考方案1】:

你需要删除files = models.ForeignKey(File, null=True, blank=True)

并添加到文件(模型)user= models.ForeignKey(User)

这里的例子docs.djangoproject.com/en/1.8/topics/db/examples/many_to_one

【讨论】:

这是为什么呢?我希望用户拥有自己的文件。 当然,这里是例子docs.djangoproject.com/en/1.8/topics/db/examples/many_to_one

以上是关于如何在 django 中获取所有 ForeignKey 的列表的主要内容,如果未能解决你的问题,请参考以下文章

如何获取django应用程序中所有视图的列表?

如何在 django 中获取所有 ForeignKey 的列表

如何在python django中获取所有父节点但过滤子节点

如何在Django中获取具有特定权限组的所有用户的列表

未读帖子 Django

Django admin - 如何获取模板标签中的所有注册模型?