与我一起忍受,因为之前曾问过类似的问题。我只是不知道如何正确应用它。我在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
答案 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>