2015-01-12 107 views
0

我有两个表,作者和书,每本书都是由一个多重作者编写的,对作者可以创建一个(一个)书,我想获取书名由一位作者创建。 在我的模板,我会认为谁写了一本书django在外键的情况下请求

作者

我的models.py

class Book(models.Model): 
     user = models.OneToOneField(User,related_name='user') 
     name = models.CharField(default=0) 
     def __unicode__(self): 
       return u'%s' % self.user 

class author(models.Model): 
     name_auth = models.CharField(max_length=256) 
     Book = models.ForeignKey(compte) 
     def __unicode__(self): 
       return u'%s' % (self.name_auth) 

我view.py

Book1 =Book.objects.filter(user=request.user).values() 
Book1_id= Book1.id 
author = Author.objects.filter(pk=Book1_id).values 
reponse[author]=author 

我的模板

{% for t in author %} 
          <td>{{ t.name }}</td> 

     {% endfor %} 
+1

我建议你阅读并实践的基础[教程](https://docs.djangoproject.com/en/1.7/intro/tutorial01/)。我觉得缺乏你的问题是一个问题。它看起来更像是“请调试我的代码”。 –

+0

感谢您的建议,但是我是初学者,我还没有找到答案来解决我的问题,因此在此发布此消息的原因是 – Hayat

+0

这就是为什么通过本教程进行工作的原因。它会明确你的代码的缺陷。相信我。 –

回答

0

根据您的陈述,模型中的逻辑不正确...

“一书有多个作者”

你需要使用一个ManyToManyField代表一书的作者:

class Author(models.Model): 
    user = models.OneToOneField(User) 

    def __unicode__(self): 
     return self.user.get_full_name() 

class Book(models.Model): 
    authors = models.ManyToManyField(Author) 
    name = models.CharField(max_length=500) 

    def __unicode__(self): 
     return self.name 


# views 

from django.shortcuts import render, get_object_or_404 

def book_detail(request, book_id): 
    book = get_object_or_404(Book, id=book_id).prefetch_related('authors') 

    return render(request, 'book_detail.html', {'book': book}) 


# book_detail.html 

{% for author in book.authors.all %} 
    {{ author }} 
{% endfor %} 
相关问题