Django管理站点-如何使用+;签名
单击+登录管理站点时,若要添加新的多人字段,将出现一个弹出窗口,要求您在多人列表中填写字段。我有如下模式:Django管理站点-如何使用+;签名,django,django-admin,many-to-many,Django,Django Admin,Many To Many,单击+登录管理站点时,若要添加新的多人字段,将出现一个弹出窗口,要求您在多人列表中填写字段。我有如下模式: 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.ManyToManyFie
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的name字段的文本框之前。我怎样才能做到呢?有什么想法吗?这应该可以做到:
# 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);
#models.py
从django.db导入模型
类关系类型(models.Model):
name=models.CharField(最大长度=50)
班级人员(models.Model):
代码=models.CharField(最大长度=15,唯一性=True)
rel_types=models.ManyToManyField('RelationType'))
#管理员
从django.contrib.admin.options导入模型管理员
类关系类型管理员(模型管理员):
班级媒体:
js=('admin/related\u type\u change\u form.js',)
#相关类型变更表单js
;(函数($){
if(窗口开启器){
$(函数(){
$('content main').prepend('p id=“code_value”>');
var目标值=$(“#代码值”);
var code_el=window.opener.$(“#id_code”);
变量更新_代码=函数(){
目标文本(代码val());
}
密码开启('keyup change',更新密码);
更新_代码();
});
}
})(django.jQuery);
更好的名字应该是:人=人,关系类型=关系类型。