django-admin-bootstrapped弄乱DateField,TimeField和PointField

时间:2015-05-07 12:58:42

标签: javascript python twitter-bootstrap django-admin postgis

我刚刚将django-admin-bootstrap添加到我的项目中。几乎一切都很好。 实际上有两个小错误,我想知道如何解决。 第一个是关于DateField和TimeField:当我在django-admin-bootstrap下时没有日期/时间选择器。当我检查源代码时,没有关于两个选择器的生成源代码。当我停用django-admin-bootstrapped时,这里缺少了什么:

  

DateField旁边:

<span class="datetimeshortcuts">&nbsp;
<a href="javascript:DateTimeShortcuts.handleCalendarQuickLink(0, 0);">Today</a>&nbsp;|&nbsp;
<a href="javascript:DateTimeShortcuts.openCalendar(0);"
    id="calendarlink0"><img src="/static/admin/img/icon_calendar.gif" alt="Calendar">
</a></span>
  

TimeField旁边:

<span class="datetimeshortcuts">&nbsp;
<a href="javascript:DateTimeShortcuts.handleClockQuicklink(1, -1);">Now</a>&nbsp;|&nbsp;
<a href="javascript:DateTimeShortcuts.openClock(1);" 
    id="clocklink1"><img src="/static/admin/img/icon_clock.gif" alt="Clock">
</a></span>

第二个是关于一个PointField(我正在使用postGis),没有django-admin-bootstrapped,我的字段很好,但是当它被引导时,我在OpenLayer.js上有一个错误:

OpenLayers.js:679 Uncaught TypeError: Cannot read property 'w' of null 

所以,两个问题(使用django 1.8和django-admin-bootstrapped):

  

1-如何在管理界面中恢复日期/时间选择器?   2-如何在管理界面中恢复我的PointField地图选择器?

谢谢你们所有人。 (这里同样的问题(1)在github上:https://github.com/django-admin-bootstrapped/django-admin-bootstrapped/issues/168但是只有外部workarround(我更喜欢nativ一个))

编辑:从我的sitepackage:./ Django / contrib / gis / admin / options.py 我直接将OpenLayer.js调用的行更改为OpenLayer.debug.js,以便为您提供更多信息。

  

在OpenLayer.debug.js中,行40008是错误的来源:

setMap: function(map) {        
    OpenLayers.Layer.prototype.setMap.apply(this, arguments);

    if (!this.renderer) {
        this.map.removeLayer(this);
    } else {
        this.renderer.map = this.map;

        var newSize = this.map.getSize();
40008-> newSize.w = newSize.w * this.ratio;
        newSize.h = newSize.h * this.ratio;
        this.renderer.setSize(newSize);
    }
},

这里是关于OpenLayer.debug.js + GeoDjango索引的整个JS回溯:

未捕获的TypeError:无法读取null ==&gt;的属性'w' OpenLayers.debug.js:40008

newSize.w = newSize.w * this.ratio;

OpenLayers.Layer.Vector.OpenLayers.Class.setMap ==&gt; OpenLayers.debug.js:8349

layer.setMap(this);

OpenLayers.Map.OpenLayers.Class.addLayer ==&gt; (指数):614

geodjango_gps_point.map.addLayer(geodjango_gps_point.layers.vector);

geodjango_gps_point.init ==&gt; (索引):677(匿名函数)

<script type="text/javascript">geodjango_gps_point.init();</script>

1 个答案:

答案 0 :(得分:0)

描述了两个问题,并为可怜的可怜性感到抱歉。所以这里有一些答案:

  

1 - 似乎发布了DateField和Timefield,这将得到解决:

Fix 168 (last update 3 days ago)

  

2 - 将此选项添加到settings.py:

后,我的PointField正确显示
DAB_FIELD_RENDERER = 'django_admin_bootstrapped.renderers.BootstrapFieldRenderer'

感谢所有