modèles:modèles django: obtenir many-to-many valeur Formset
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)
...
formes:
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>
Ainsi, cette commande affiche un multiple sélectionnez la case pour les auteurs de chaque livre. Comment puis-je obtenir le prénom des auteurs dans le modèle?
Merci, Adi
modifier: vues ajouté
vues:
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))
code js pour charger la page booklist dans la page 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;
});
});
merci pour votre réponse, mais ça ne marche pas ... aucune erreur ... rien ... n'affiche tout simplement pas le nom – adi
Intéressant, affichez la vue et formez le code python pour pouvoir le donner un essai. – jpic
J'ai ajouté le code de vues. En fait, "booklist" est affiché dans un div à l'intérieur de la page "thebooks". en utilisant le code js. Donc, la chose nom de l'auteur (le code du modèle) est dans la vue de la liste de livres – adi