Django查询如何获得M2M扩关系列表图词典列表

没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!djangoueditor 跟xadmin自带的插件如m2m多对多选择样式的js有冲突解决办法
问题原因xadmin中新建的ueditor.py插件...class XadminUEditorWidget(UEditorWidget):& & def __init__(self,**kwargs):& & & & self.ueditor_options=kwargs& & & & self.Media.js = None& & & & super(XadminUEditorWidget,self).__init__(kwargs)....其中self.Media.js = None这一句把其它的插件渲染的js和css都置空,导致ueditor正常其它插件有问题。但是去掉这句的话ueditor又不正常。解决方法这里以ueditor与m2m多对多选择插件有冲突的解决方法,把m2m需要的js和css文件加入即可(至于怎么知道这些js和css的,还原问题现象比对正常和异常的js不同即可)。#&-*-&coding:&utf-8&-*-
import&xadmin
from&xadmin.views&import&BaseAdminPlugin,&CreateAdminView,UpdateAdminView
from&DjangoUeditor.models&import&UEditorField
from&DjangoUeditor.widgets&import&UEditorWidget
from&django.conf&import&settings
class&XadminUEditorWidget(UEditorWidget):
&&&&def&__init__(self,**kwargs):
&&&&&&&&self.ueditor_options=kwargs
&&&&&&&&self.Media.js&=&None
&&&&&&&&super(XadminUEditorWidget,self).__init__(kwargs)
class&UeditorPlugin(BaseAdminPlugin):
&&&&def&get_field_style(self,&attrs,&db_field,&style,&**kwargs):
&&&&&&&&if&style&==&'ueditor':
&&&&&&&&&&&&if&isinstance(db_field,&UEditorField):
&&&&&&&&&&&&&&&&widget&=&db_field.formfield().widget
&&&&&&&&&&&&&&&&param&=&{}
&&&&&&&&&&&&&&&&param.update(widget.ueditor_settings)
&&&&&&&&&&&&&&&&param.update(widget.attrs)
&&&&&&&&&&&&&&&&return&{'widget':&XadminUEditorWidget(**param)}
&&&&&&&&&&&&if&isinstance(db_field,&TextField):
&&&&&&&&&&&&&&&&return&{'widget':&XadminUEditorWidget}
&&&&&&&&return&attrs
&&&&#&Media,添加到footer中的js文件
&&&&def&get_media(self,&media):
&&&&&&&&media&=&media&+&self.vendor('xadmin.widget.select.js','xadmin.widget.select-transfer.js','xadmin.plugin.quick-form.js')
&&&&&&&&return&media
&&&&#添加到header中的css和js文件
&&&&def&block_extrahead(self,&context,&nodes):
&&&&&&&&js&='&link&href=&/static/xadmin/vendor/select2/select2.css&&type=&text/css&&media=&screen&&rel=&stylesheet&&/&'
&&&&&&&&js&+='&link&href=&/static/xadmin/vendor/selectize/selectize.css&&type=&text/css&&media=&screen&&rel=&stylesheet&&/&'
&&&&&&&&js&+='&link&href=&/static/xadmin/vendor/selectize/selectize.bootstrap3.css&&type=&text/css&&media=&screen&&rel=&stylesheet&&/&'
&&&&&&&&js&+='&link&href=&/static/xadmin/css/xadmin.widget.select-transfer.css&&type=&text/css&&media=&screen&&rel=&stylesheet&&/&'
&&&&&&&&js&+='&script&type=&text/javascript&&src=&/static/xadmin/vendor/selectize/selectize.js&&&/script&'
&&&&&&&&js&+='&script&type=&text/javascript&&src=&/static/xadmin/vendor/select2/select2.js&&&/script&'
&&&&&&&&js&+='&script&type=&text/javascript&&src=&/static/xadmin/vendor/select2/select2_locale_zh-hans.js&&&/script&'
&&&&&&&&#js&+='&script&type=&text/javascript&&src=&/static/xadmin/js/xadmin.widget.select.js&&&/script&'
&&&&&&&&#js&+='&script&type=&text/javascript&&src=&/static/xadmin/js/xadmin.widget.select-transfer.js&&&/script&'
&&&&&&&&#js&+='&script&type=&text/javascript&&src=&/static/xadmin/js/xadmin.plugin.quick-form.js&&&/script&'
&&&&&&&&js&+=&'&script&type=&text/javascript&&src=&%s&&&/script&'&%&(settings.STATIC_URL&+&&ueditor/ueditor.config.js&)
&&&&&&&&js&+=&'&script&type=&text/javascript&&src=&%s&&&/script&'&%&(settings.STATIC_URL&+&&ueditor/ueditor.all.min.js&)
&&&&&&&&nodes.append(js)
xadmin.site.register_plugin(UeditorPlugin,&UpdateAdminView)
xadmin.site.register_plugin(UeditorPlugin,&CreateAdminView)本文属原创文章,转载请注明来自(www.lybbn.cn-老眼帮帮你)在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
刚在stackoverflow上问的问题,大神们求救
This problem almost drives me crazy
I was trying to use the StackedInline in admin interface.
The code below is in django documentation.
class Person(models.Model):
name = models.CharField(max_length=128)
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
class MembershipInline(admin.StackedInline):
model = Membership
class PersonAdmin(admin.ModelAdmin):
inlines = (MembershipInline,)
class GroupAdmin(admin.ModelAdmin):
inlines = (MembershipInline,)
But if the Group is an abstract base class and PublicGroup is subclass inherited from Group. Membership is used to relate PublicGroup and Person.
class Person(models.Model):
name = models.CharField(max_length=128)
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='%(class)s_Membership')
class Meta:
abstract = True
class PublicGroup(Group):
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
after running the command
python manage.py sql test
I got error "AssertionError: ForeignKey cannot define a relation with abstract class Group".
After searching for solution, I know foreign key cannot point to a abstract class. Some solutions recommended to use generic relation. So I change the code again.
class Person(models.Model):
name = models.CharField(max_length=128)
class Group(models.Model):
name = models.CharField(max_length=128)
members = generic.GenericRelation('Membership')
class Meta:
abstract = True
class PublicGroup(Group):
class Membership(models.Model):
person = models.ForeignKey(Person)
content_type = models.ForieignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey()
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
This time the command
python manage.py sql test
returns no error. But I got error when I tried to add data on admin interface. The error says Membership is not a foreign key of PublicGroup. StackedInline
still doesn't work.
Now I really don't know what to do. Does anyone know how to achieve this function.
Thanks for reading!
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Django ModelForm与Form – 运维生存时间
你可能喜欢
有回复时邮件通知我
关于本站 本站以分享运维技术为主,欢迎大家参与技术分享,同时也欢迎大家吐槽,本站提供以下交流圈:QQ群①:*****(满)QQ群②:6690706 QQ群③: QQ群④:(新) 微信公众号:ttlsacom 商务合作QQ:
记住我的登录信息
点击“立即注册”转到用户注册页面。
输入用户名或电子邮箱地址,您会收到一封新密码链接的电子邮件。
用户名或电子邮件地址

我要回帖

更多关于 射线列表式关系图 的文章

 

随机推荐