如何解决有什么方法可以将变量传递到django元类中?
我正在使用django应用程序,该应用程序允许用户在地图上创建一个点。为了便于使用,此地图需要居中于某个位置,并且此位置是可变的。我正在使用LeafletWidget
让用户创建这一点。
可以通过更改LeafletWidget
的属性来使地图居中。不幸的是,此窗口小部件是在Meta
类中定义的,据我了解,您无法将变量传递给它。这是我想做的一个示例,以某种方式将变量center
传递到Meta
类中。 center
是具有纬度和经度值的元组。此示例代码当然不起作用。我不知道您是否可以通过某种方式将变量传递到Meta
类中。
class PointModelForm(ModelForm):
class Meta(center):
model = PointModel
fields = ['name','point']
widgets = {'point': LeafletWidget(attrs={'settings_overrides': {'DEFAULT_CENTER': center} })}
我最好的选择是在widgets
函数中定义__init__
属性,但是如果我正确的话,Meta
类不能访问这些属性。当我运行此程序时,不使用任何小部件。
class PointModelForm(ModelForm):
class Meta:
model = PointModel
fields = ['name','point']
def __init__(self,center):
super(PointModelForm,self).__init__()
self.widgets = {'point': LeafletWidget(attrs={'settings_overrides': {'DEFAULT_CENTER': center} })}
您知道如何执行此操作吗?预先感谢!
解决方法
您可以通过以下方式指定小部件的属性:
class PointModelForm(ModelForm):
class Meta:
model = PointModel
fields = ['name','point']
def __init__(self,*args,center=None,**kwargs):
super(PointModelForm,self).__init__(*args,**kwargs)
if center is not None:
attrs = self.fields['point'].widget.attrs
subattrs = attrs.setdefault('settings_overrides',{})
subattrs['DEFAULT_CENTER'] = center
然后您可以使用以下方法构造一个PointModelForm
:
PointModelForm(center=(55,12)) # for GET request
PointModelForm(request.POST,request.FILES,center=(55,12)) # for POST request
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。