【问题标题】:TimeField displayed as dateTimeField 显示为日期
【发布时间】:2018-02-26 18:08:03
【问题描述】:

我正在使用 Django 框架构建一个简单的库存管理系统。使用 django admin 填充的数据库中有数据。现在,当我在网站(前端)上显示数据时,有一个时间字段显示日期,虽然我开始学习 django,但我认为我的模型是错误的。下面我附上了我的 models.py 以及实际网站上的错误。

模型.py

    # -*- coding: utf-8 -*-

from __future__ import unicode_literals
import time
from django.db import models

class Cart(models.Model):
    def __str__(self):
        return self.CartColor

    CartColor = models.CharField(max_length=255)
    Quantity = models.CharField(max_length=5)


class Initials(models.Model):
    def __unicode__(self):
        return self.Staff

    Staff = models.CharField(max_length=255)
    FirstName = models.CharField(max_length=255)
    LastName = models.CharField(max_length=255)


class RTInfo(models.Model):
    def __str__(self):
        return str(self.TicketNo)

    TicketNo = models.CharField(max_length=10)
    # TickStamp = models.DateField(auto_now_add=True, blank=True)


class Room(models.Model):
    def __unicode__(self):
        return self.Number

    Number = models.CharField(max_length=5)


class TCCheckOut(models.Model):
    def __str__(self):
        return str(self.ReturnDate)

    ReturnDate = models.DateField(auto_now_add=True, blank=True)
    ReturnTime = models.TimeField(auto_now_add=True, blank=True, unique_for_date=True)
    OutQuantity = models.CharField(max_length=255)
    Staff = models.ForeignKey(Initials, on_delete=models.CASCADE)
    Number = models.ForeignKey(Room, on_delete=models.CASCADE)
    CartColor = models.ForeignKey(Cart, on_delete=models.CASCADE)
    TicketNo = models.ForeignKey(RTInfo, related_name="custom_user1_profile", on_delete=models.CASCADE)
    # TickStamp = models.ForeignKey(RTInfo,related_name="custom_pass2_profile", on_delete=models.CASCADE)


class TCCheckIn(models.Model):
    def __str__(self):
        return str(self.Date)

    Date = models.DateField(auto_now_add=True, blank=True)
    Time = models.TimeField(auto_now_add=True, blank=True)
    Quantity = models.CharField(max_length=255)
    Staff = models.ForeignKey(Initials, on_delete=models.CASCADE)
    Number = models.ForeignKey(Room, on_delete=models.CASCADE)
    CartColor = models.ForeignKey(Cart, on_delete=models.CASCADE)
    TicketNo = models.ForeignKey(RTInfo, related_name="custom_user_profile", on_delete=models.CASCADE)
    ReturnDate = models.ForeignKey(TCCheckOut, related_name="value1", on_delete=models.CASCADE)
    ReturnTime = models.ForeignKey(TCCheckOut, related_name="timeRet", on_delete=models.CASCADE)
    OutQuantity = models.ForeignKey(TCCheckOut, related_name="value3", on_delete=models.CASCADE)

实际错误 Actual_error

从上图可以看出,即使正在保存时间,也会显示日期。还注意到,在 Django admin 中,上述时间字段也显示日期,下面附了一张图片

Django_Error

我假设,在 Django 管理员返回时间应该是一个时间戳,那么为什么显示日期?

感谢任何可以提供帮助的人!

【问题讨论】:

  • 在您的TCCheckIn 模型中,您定义了ReturnTime,它是对TCCheckOut 实例的引用,它的__str__() 返回ReturnDate
  • 这里的工作是什么,因为如果我将 __str__() 更改为 ReturnTIme,那么日期显示错误......

标签: python django django-models django-forms django-views


【解决方案1】:

正如我在评论中提到的,这是因为您在 TCCheckOut 模型中的 __str__()。

str()

由 str(object) 和内置函数 format() 和 print() 调用 计算“非正式”或可很好打印的字符串表示 一个东西。返回值必须是字符串对象。

要解决您的问题,您可以使用TCCheckIn 实例访问ReturnDate 和ReturnTime

In [1]: check_in = TCCheckIn.objects.get(id=1)

In [2]: check_in.ReturnDate.ReturnDate
Out[2]: datetime.date(2018, 2, 27)

In [3]: check_in.ReturnDate.ReturnTime
Out[3]: datetime.time(1, 24, 46, 440771)


通过使用这种访​​问,您可以将它们显示在您的模板/html中

【讨论】:

  • 很高兴听到这个消息!
  • 你好!!!我有关于表格的最后一个问题!打开一个新问题还是在此处发布?谢谢!
  • 发布一个新问题
猜你喜欢
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
  • 2012-03-05
相关资源
最近更新 更多