Django - 模型中的函数.如何从视图中调用它?

 mobiledu2502908767 发布于 2023-02-03 11:27

我正在Django设计一个模型,但我不知道这是不是最好的方法.我有一个名为"历史"的模型,在这个模型中,我有一个专门的函数来处理这个模型的插入.

备选方案1

class History(models.Model):
    field1 = models.ForeignKey(Request)
    field2 = models.BooleanField()
    field3 = models.DateTimeField()

    def __unicode__(self):
        return str(self.field1.id)

    class Meta: #
        ordering = ['-field3']

    def insert_history(self):
        # Here I will have some business logic to insert the data to the history model

要将数据插入到History模型中,我总是必须使用"insert_history"函数.

我的问题是:

上面的代码是正确的吗?

如果是,我如何从视图中调用"insert_history"?


备选方案2

我有另一种替代方案,我已经测试过并且有效,但感觉不对.代码如下所示:

class History(models.Model):
    field1 = models.ForeignKey(Request)
    field2 = models.BooleanField()
    field3 = models.DateTimeField()

    def __unicode__(self):
        return str(self.field1.id)

    class Meta: #
        ordering = ['-field3']

def insert_history(field1, field2, field3):
    # Here I will have some business logic to insert the data to the history model

我从这样的观点来称呼它:

from app.models import insert_history

insert_history('1', True, 'some_date')

这样做的正确方法是什么?如果备选方案1是正确的,我如何从视图中调用"insert_history"?

最好的祝福,

1 个回答
  • insert_history是否使用self?或者它是否创建了一个新的History对象?

    如果它创建了一个新对象,我会这样做:

    class History(models.Model):
        @classmethod
        def insert_history(cls, field1, field2, field3):
            # Here be code
    

    打电话给它

    from app.models import History
    History.insert_history(field1, field2, field3)
    

    BTW,创建新对象的方法的传统名称是create.另外,请查看https://docs.djangoproject.com/en/1.9/ref/models/instances/#creating-objects

    2023-02-03 11:31 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有