【问题标题】:Save dates/time in a list in model Django在模型 Django 的列表中保存日期/时间
【发布时间】:2018-01-14 19:39:39
【问题描述】:

我想将一些日期保存为 Django 模型中的列表,但无法正确完成。所以首先我尝试了last_visits = CharField(....) 并编写了一个函数来向该字符域添加值。这不起作用,因为我无法制作正确的列表。我找到了 this(列表的JSONField模型属性),但是将python时间存储到JSON中会出现问题,因为Json无法正确序列化它并将其转换为@987654323 @ 会导致新问题,因为我必须稍后将其转换回来。

所以我的问题是:有没有一种简单的方法可以保存多个日期(列表/数组)?

someList = list()
global someList
def logins(self):
    someList.append(datetime.datetime.now())
    return someList 

这是我编写的一个函数,它工作正常,但值没有被保存。如何添加列表的旧值并将新值添加到模型属性(Charfield/textField/JSONField)中?

我尝试如下:

#"last_visit" is the model attribute
someList.append(self.last_visit)
self.last_visit += json.dumps(datetime.datetime.now())
self.last_visit = someList
self.last_visit.append(datetime.datetime.now())
self.last_visit.save()

但这些都不起作用。请注意,我并没有一次使用所有这些,我只是想概述一下我尝试过的内容。

【问题讨论】:

    标签: python django


    【解决方案1】:

    我不认为将日期列表存储为字符或文本字段是一个好的解决方案。为什么不使用模型关系?我向您展示了一个包含多个相关日期的 Event 对象的模型示例。使用 DateField 也方便过滤!!

    class Event(models.Model):
    
        name = models.CharField(max_length=255, unique=True, blank=False, null=False)
    
    
    class EventData(models.Model):
    
        event = models.ForeignKey(Event, on_delete=models.CASCADE)
        date = models.DateField(default=None, blank=False, null=False)
    

    【讨论】:

    • 在EventData 中,您的意思是ForeignKey(Event, ...?
    • 感谢您的回答,但我真的不知道我应该如何处理它。感觉有点复制粘贴了一些代码,但没有根据我的需要进行任何配置,是的,我知道 ForeignKey 是什么。 “我不认为将日期列表存储为字符或文本字段是一个好的解决方案”这就是我问这个问题的原因......
    猜你喜欢
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多