Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Yes, sure. </p> <ol> <li><p>Append <code>author</code> primary key as <code>GET</code> parameter to your url:</p> <pre><code>&lt;ul&gt; &lt;li&gt;&lt;a href="{% url admin:content_scribpart_add %}?author={{ object_id }}"&gt;Add a Book&lt;/a&gt;&lt;/li&gt; {% for book in original.book_set.all %} &lt;li&gt;&lt;a href="{% url admin:myapp_book_change book.id %}?author={{ object_id }}"&gt;Edit {{ book }}&lt;/a&gt;&lt;/li&gt; {% endfor %} &lt;/ul&gt; </code></pre></li> <li><p>Modify the corresponding <code>ModealAdmin</code> for book, override <a href="https://stackoverflow.com/questions/1339845/redirect-on-save/1356549#1356549"><code>response_add()</code> and <code>response_change()</code></a>. Note that we also <a href="https://docs.djangoproject.com/en/1.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_foreignkey" rel="nofollow noreferrer">override <code>formfield_for_forein_key</code></a> in order to pre-populate <code>author</code> field:</p> <pre><code>from django.http import HttpResponseRedirect from django.core.urlresolvers import reverse class BookAdmin(admin.ModelAdmin): def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == "author": try: author_pk = int(request.GET.get('author', ''),) except ValueError: pass else: kwargs["initial"] = Author.objects.get(pk=author_pk) return super(BookAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def response_add(self, request, obj, post_url_continue=None): return HttpResponseRedirect(reverse('admin:myapp_author_change', args=(obj.author.pk,)) ) def response_change(self, request, obj, post_url_continue=None): return HttpResponseRedirect(reverse('admin:myapp_author_change', args=(obj.author.pk,)) ) </code></pre></li> </ol>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload