管理员编辑视图-按参数填充字段



是否有方法通过参数预填充admin add form?使用通常的图书出版商示例,我试图在出版商编辑页面上建立一个链接,直接添加图书:

从django.db导入型号

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()
class Book(models.Model):
    title = models.CharField(max_length=100)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()

我想通过一个链接来调整我的出版商模型,直接添加一本书,将以下链接添加到我的出版商模式:

class PublisherAdmin(admin.ModelAdmin):
    def add_book_link(self, instance):
        url = reverse('admin:myapp_book_add')
        return mark_safe(u'<a href="{u}">Add</a>'.format(u=url))
    add_book_link.short_description = _("New Book")
    readonly_fields = ['add_book_link',]
  1. 如何将参数(发布者id)传递到add页面
  2. 如何更改add_book页面上的"发布者"字段

我知道内联,但在我的情况下我不能使用它们。我还查看了prepopulated_fields,但它们只能从现有字段中读取。

这其实并不难。添加表单是使用request.GET来设置初始值的,所以您所需要做的就是将适当的值放入您的URL:

def add_book_link(self, instance):
    if instance.id:
        url = '%s?publisher=%d' % (reverse('admin:myapp_book_add'), instance.id)
    else:
        url = reverse('admin:myapp_book_add')
    return mark_safe(u'<a href="{u}">Add</a>'.format(u=url))

我通常习惯于为管理字段设置allow_tags,而不是使用mark_safe

最新更新