Django:如果通过外键关联,则如何从一个表中提取另一个表的项目

时间:2017-12-03 12:55:04

标签: python django django-models foreign-keys

我有两个表:用户详细信息(包括书籍的详细信息)。它们通过外键相互链接,如下所示:

class Details(models.Model):
    user= models.ForeignKey(settings.AUTH_USER_MODEL, null=True)
    BName= models.CharField(max_length=200)
    BPublisher= models.CharField(max_length=200)
    BEdition= models.CharField(max_length=100)
    BAuthor= models.CharField(max_length=200)
    BClass= models.CharField(max_length=100)

现在我需要从表格中提取所有书籍 - 由不同用户发布的详细信息。我怎样才能做到这一点 ? Django管理员提交的内容如下:enter image description here

2 个答案:

答案 0 :(得分:0)

你可以在你的视图功能中这样做:

def get_book_set(request):
   user_instance = request.user
   book_set = Details.objects.filter(user = user_instance)
   context = {'user':user_instance, 'book_set':book_set}
   return render(request, 'template_file.html', context)

答案 1 :(得分:0)

 u = User.objects.get(id=your_id)

你可以通过django反向关系获得用户的书籍:

book_set = u.details_set.all()

您可以在模型中更改默认的related_name details_set(ModelName_set):

user= models.ForeignKey(settings.AUTH_USER_MODEL, null=True, related_name='book')