作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
标准示例:
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author)
#... Many other fields ...
我想从作者
更改页面编辑书籍
。
我尝试过 InlineModelAdmin但由于 Book
字段较多,编辑起来并不容易。
这就是为什么我尝试在作者/更改模板上添加指向 child 的链接。
<ul>
<li><a href="{% url admin:content_scribpart_add %}">Add a Book</a></li>
{% for book in original.book_set.all %}
<li><a href="{% url admin:myapp_book_change book.id %}">Edit {{ book }}</a></li>
{% endfor %}
</ul>
但是有几个问题
Book
表单中预填充相关的作者
ID作者
最佳答案
是的,当然。
将 author
主键作为 GET
参数附加到您的网址:
<ul>
<li><a href="{% url admin:content_scribpart_add %}?author={{ object_id }}">Add a Book</a></li>
{% for book in original.book_set.all %}
<li><a href="{% url admin:myapp_book_change book.id %}?author={{ object_id }}">Edit {{ book }}</a></li>
{% endfor %}
</ul>
修改图书对应的ModealAdmin
,覆盖response_add()
and response_change()
。请注意,我们还 override formfield_for_forein_key
为了预先填充 author
字段:
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,))
)
关于Django-管理员 : Editing child model without inlineForm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8064325/
您好,我似乎无法过滤内嵌表单中的外键下拉列表。 这些是我的类(class): class Author(models.Model): name = models.CharField(max_l
标准示例: class Author(models.Model): name = models.CharField(max_length=100) class Book(models.Model)
我是一名优秀的程序员,十分优秀!