class Author(models.Model):
...
first_name = models.CharField(max_length=30)
...
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
...
形式:
class BookForm(ModelForm):
class Meta:
model = Book
booklist.html:
<table>
{{ formset.management_form }}
{% for form in formset.forms %}
<tr>
<td> {{ form.title.value }} </td>
<td> {{ form.authors }} </td>
</tr>
{% endfor %}
</table>
所以,這個輸出多選擇每個書的作者。 如何獲取模板中作者的first_name?
感謝, 阿迪
編輯:添加意見
觀點:
def thebooks(request):
BookFormSet = modelformset_factory(Book, form = BookForm)
if request.method == 'POST':
formset = BookFormSet(request.POST)
if formset.is_valid():
formset.save()
else:
formset = BookFormSet(queryset = Book.objects.all())
return render_to_response('thebooks.html', {'formset': formset,}, context_instance=RequestContext(request))
def booklist(request):
BookFormSet = modelformset_factory(Book, form = BookForm)
formset = BookFormSet(request.POST)
return render_to_response('booklist.html', {'formset':formset,}, context_instance=RequestContext(request))
js代碼加載在thebooks頁的書單頁:
$(document).ready(function() {
$("#form").submit(function() {
$.post('/books/booklist/', $(this).serialize(),
function(data) {
if (data == "") { alert("No data returned!"); return; }
// otherwise set the content div to the data we received
$('#allElements').html(data);
}
);
// disable normal submitting of the form since we use ajax now
return false;
});
});
謝謝你的回覆,但它不工作...沒有錯誤...沒有...只是不顯示名稱 – adi 2012-02-21 13:15:25
有趣的是,張貼視圖和形式的Python代碼,以便我們可以給它一試。 – jpic 2012-02-21 13:29:22
我添加了視圖代碼。 實際上,「booklist」顯示在「thebooks」頁面的div中。使用js代碼。所以作者名稱的東西(模板代碼)是在書目視圖 – adi 2012-02-21 13:35:51