Javascript 实时通知应用程序DateTimeField问题
我用沼泽龙写了一个通知程序。不幸的是,pub_date变量包含微秒,我不希望它出现在那里。我如何在管理站点(a.m.p.m版本)中将其格式化为“dd-MM-yyyy HH:MM:ss”或类似的格式? My controller.js:Javascript 实时通知应用程序DateTimeField问题,javascript,python,angularjs,django,swampdragon,Javascript,Python,Angularjs,Django,Swampdragon,我用沼泽龙写了一个通知程序。不幸的是,pub_date变量包含微秒,我不希望它出现在那里。我如何在管理站点(a.m.p.m版本)中将其格式化为“dd-MM-yyyy HH:MM:ss”或类似的格式? My controller.js: var AnnounceControllers = angular.module('AnnounceControllers', []); AnnounceControllers.controller('AnnounceListCtrl', ['$scope',
var AnnounceControllers = angular.module('AnnounceControllers', []);
AnnounceControllers.controller('AnnounceListCtrl', ['$scope', '$dragon', function ($scope, $dragon) {
$scope.announceList = {};
$scope.announcements = [];
$scope.channel = 'announce';
$dragon.onReady(function() {
$dragon.subscribe('announcements', $scope.channel, {announce_list__id: 1}).then(function(response) {
$scope.dataMapper = new DataMapper(response.data);
});
$dragon.getSingle('announce-list', {id:1}).then(function(response) {
$scope.announceList = response.data;
});
$dragon.getList('announcements', {list_id:1}).then(function(response) {
$scope.announcements = response.data;
});
});
$dragon.onChannelMessage(function(channels, message) {
if (indexOf.call(channels, $scope.channel) > -1) {
$scope.$apply(function() {
$scope.dataMapper.mapData($scope.announcements, message);
});
}
});
}]);
我的app.js:
var AnnounceApp = angular.module('AnnounceApp', [
'SwampDragonServices',
'AnnounceControllers'
]);
在HTML中:
<h3 ng-repeat="item in announcements">
<div class="alert alert-info" role="alert">
{{ item.content }} {{item.pub_date| date:'dd-MM-yyyy HH:mm:ss'}}
<br>
</div>
</h3>
serializers.py:
class AnnounceSerializer(ModelSerializer):
class Meta:
model = "post.Announce"
publish_fields = ("content","pub_date")
您必须将DateTime字段转换为ISO 8061格式,以便AngularJS日期过滤器能够工作:
pub_date = models.DateTimeField(auto_now_add = True).isoformat(' ')
编辑:
在进一步澄清之后,问题是您获得的时间戳格式不正确,javascript无法将其识别为日期 我使用了Daniel Cottone的一些信息,并做了如下操作:
class Announce(SelfPublishModel, models.Model):
serializer_class = AnnounceSerializer
announce_list = models.ForeignKey(AnnounceList)
content = models.CharField(max_length=100)
pub_date = models.DateTimeField(default=datetime.now)
date = models.TextField(null=True)
def __unicode__(self):
return self.content
@receiver(pre_save,sender=Announce)
def date_handler(sender,instance,*args,**kwargs):
instance.date = instance.pub_date.isoformat()
没有参数的isoformat对我有效 如果角度日期过滤器不工作,则可能是
pub_date
是一个字符串,尝试将其解析为JavaScript日期?我在问题中添加了serializers.py,还尝试了新的models.TextField,它实际上是使用pre_save signal将发布日期转换为isoformat,但它不起作用。我正在使用沼泽龙教程,在本教程中使用了序列化对象ModelSerializer,我知道“iso-8601”是输出格式。我看到输出为2015-07-20 16:52:51.347082Ah,好的,我现在看到你的问题了。你必须将你得到的数据解析成一个合适的时间戳,现在它只是一个字符串。它真的有效吗?因为当运行这个plunker时,输出日期为空?我不知道为什么它对你不起作用。我尝试了Windows和Lubuntu,日期为空,没有更改。用不同的方法可以做到吗?
class Announce(SelfPublishModel, models.Model):
serializer_class = AnnounceSerializer
announce_list = models.ForeignKey(AnnounceList)
content = models.CharField(max_length=100)
pub_date = models.DateTimeField(default=datetime.now)
date = models.TextField(null=True)
def __unicode__(self):
return self.content
@receiver(pre_save,sender=Announce)
def date_handler(sender,instance,*args,**kwargs):
instance.date = instance.pub_date.isoformat()