Django管理员网站 - 如何覆盖添加manytomanyfield +符号?

时间:2014-04-29 08:23:37

标签: django django-admin many-to-many

单击+登录管理站点时,要添加新的ManyToMany字段,会出现一个弹出窗口,并要求您填写ManyToMany表的字段。我有一个如下的架构:

class RelTypes(models.Model):
    name = models.CharField(max_length=50)

class People(models.Model):
    code = models.CharField(max_length="15", unique=True)
    rel_types = models.ManyToManyField('RelationTypes')

我想显示code,用户在弹出窗口中,在RelTypes的名称字段的文本框之前向People模型(在管理站点中)添加新字段时输入。我怎样才能实现它?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

# models.py
from django.db import models

class RelationType(models.Model):
    name = models.CharField(max_length=50)

class People(models.Model):
    code = models.CharField(max_length=15, unique=True)
    rel_types = models.ManyToManyField('RelationType')

# admin.py
from django.contrib.admin.options import ModelAdmin

class RelationTypeAdmin(ModelAdmin):
    class Media:
        js = ('admin/related_type_change_form.js',)

# related_type_change_form.js
;(function($) {
    if(window.opener) {
        $(function() {
            $('#content-main').prepend('<p id="code_value"></p>');
            var target_el = $("#code_value");
            var code_el = window.opener.$("#id_code");
            var update_code = function() {
                target_el.text(code_el.val());
            }
            code_el.on('keyup change', update_code);
            update_code();
        });
    }
})(django.jQuery);