[英]django-models,views.py & templates to foreign key assignment
models.py
class Author(models.Model):
author_id=models.AutoField(primary_key=True)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
age=models.IntegerField()
class Meta:
db_table=u'Author Info'
def __unicode__(self):
return u"%d %s %s %s %d" % (self.pk, self.first_name, self.last_name, self.email,self.age)
def books(self):
return Book.objects.filter(author=self)
class Book(models.Model):
book_id=models.AutoField(primary_key=True,unique=True)
book_name=models.CharField(max_length=30)
publisher_name=models.CharField(max_length=40)
author=models.ForeignKey(Author)
class Meta:
db_table = u'Book Name'
def __unicode__(self):
return u'%d %s %s' % (self.pk, self.book_name, self.publisher_name)
views.py
def addbook(request):
if request.POST:
first_name = request.POST.get('first_name')
last_name = request.POST.get('last_name')
email = request.POST.get('email')
age = request.POST.get('age')
author = Author(first_name = first_name,last_name = last_name,email=email,age=age)
author=author.save()
book_name = request.POST.get('book_name')
publisher_name = request.POST.get('publisher_name')
#Book.author_id=author
#author_id = author_id()
book=Book.objects.create(book_name=book_name,publisher_name=publisher_name,author_id)
book.save()
return redirect('/index/')
else:
return render_to_response('addbook.html',context_instance=RequestContext(request))
的index.html /模板
table border="0" cellpadding='8' cellspacing='10'>
<tr>
<td align="right" colspan="8"><a href="/addbook/">Add Book</a></td>
</tr>
<tr>
<th>Book Id</>
<th>Book name</th>
<th>Publication name</th>
<th>Author Id</th>
<th>First Name</th>
<th>Last Name</th>
<th>E Mail</th>
<th>Age</th>
</tr>
{% for book in books %}
<tr>
<td>{{ book.book_id }}</td>
<td>{{ book.book_name }}</td>
<td>{{ book.publisher_name }}</td>
<td>{{ book.author_id }}</td>
{% for author in authors %}
<td>{{author.first_name}} </td><td>{{author.last_name}}</td>
<td>{{author.email}}</td>
<td>{{author.age}}</td>
{% endfor %}
<td><a href="/editbook/{{ book.book_id}}">Edit</a></td>
<td><a href="/deletebook/{{ book.book_id}}">Delete</a></td>
{% endfor %}
這里如何在Book類中為“author”或author_id字段分配外鍵值,請給出賦值程序。我無法設置值給forreign鍵字段...如何分配或者是否有其他可用功能請解釋我
Integrity錯誤是由於null值傳遞給Book表的author_id列。 檢查此行book=Book.objects.create(book_name=book_name,publisher_name=publisher_name,author_id)
如果你想在book表中插入相同的作者id,你可以使用
Django的信號
或者您必須通過查詢一些獨特的參數(比如電子郵件ID值)從Author表中獲取最新的作者ID,並將此ID傳遞給Books表
問題是這樣的:
author = Author(first_name = first_name,last_name = last_name,email=email,age=age)
author=author.save()
save()
實際上並沒有返回任何東西,即使我相信它應該。 將其更改為:
author = Author(first_name = first_name,last_name = last_name,email=email,age=age)
author.save()
book.author = author
book.save()
現在你有了你的作者,你可以分配給book.author
。
而且,雖然我在這里,你應該了解反向關系 。 不需要以下方法:
def books(self):
return Book.objects.filter(author=self)
因為你可以這樣做:
author.book_set.all()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.