字符串到日期字段的转换

时间:2019-06-11 15:31:57

标签: python django

与我一起忍受,因为之前曾问过类似的问题。我只是不知道如何正确应用它。我在Charfield(aka字符串)形式中有一个字段称为场外,以2019-06-19的形式表示日期。

我希望它采用这种格式,而不是06/19/2019或6/19/2019。有人可以帮我这个忙,以便我可以用这种格式在模板中调用它。

#MODELS
class PlayerLkup(models.Model):
    playerid = models.CharField(db_column='playerID', primary_key=True, max_length=255)
    birthmonth = models.IntegerField(db_column='birthMonth', blank=True, null=True)
    birthday = models.IntegerField(db_column='birthDay', blank=True, null=True)
    weight = models.IntegerField(blank=True, null=True)
    debut = models.CharField(max_length=255, blank=True, null=True)    # this is the field I'm working with



#VIEWS
from django.shortcuts import render
from .models import PlayerLkup    

def player_info(request, playerid):
    playerdata = PlayerLkup.objects.get(playerid=playerid)
    battingstats = playerdata.hittingstats_set.all()          #Hittingstats table has a foreign key that references PlayerLkup table
    return render(request, 'careerstats/playerpage.html', {'playerdata': playerdata, 'battingstats': battingstats})



#TEMPLATE
{{ playerdata.debut }} # Unformatted call of debut

2 个答案:

答案 0 :(得分:1)

在视图函数中,使用字符串split()函数将首次亮相分成单独的年,月和日值,然后将它们重新组合为所需的格式。

year, month, day = playerdata.debut.split("-")
new_debut = "%s/%s/%s" % (month, day, year)

然后将这个新值传递到模板渲染中:

return render(request, 'careerstats/playerpage.html', {'playerdata': playerdata, 'battingstats': battingstats}, 'new_debut': new_debut)

最后,将其显示在模板中:

{{ new_debut }}

答案 1 :(得分:0)

由于首次亮相是Charfield,因此用户可以输入任何格式的日期。因此,最好从客户端进行验证。您可以在html5中轻松完成此操作,也可以通过Js进行验证。因此,该用户只能插入一种格式。

<form method="POST" action="">
    Debut: <input type="text" size="12" id="id_debut" name="debut" required pattern="\d{4}-\d{1,2}-\d{1,2}" placeholder="yy-mm-dd">
    <p><input type="submit"></p>
</form>