2015-01-12 163 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 %} 
相關問題