Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向Django模型添加方法_Python_Django_Graphql - Fatal编程技术网

Python 向Django模型添加方法

Python 向Django模型添加方法,python,django,graphql,Python,Django,Graphql,我正在构建我的第一个GraphQL变种。最初,我使用找到的示例代码构建了它。但现在我正在对它进行重构,使其具有更好的结构。虽然代码似乎运行良好,因为我对Django比较陌生,但我不确定我使用的方法是否是Django/Python的最佳实践 这是我的相关代码: #models.py 类工作流(models.Model): name=models.CharField(最大长度=30) description=models.TextField(blank=True,null=True) 定义(自我)

我正在构建我的第一个GraphQL变种。最初,我使用找到的示例代码构建了它。但现在我正在对它进行重构,使其具有更好的结构。虽然代码似乎运行良好,因为我对Django比较陌生,但我不确定我使用的方法是否是Django/Python的最佳实践

这是我的相关代码:

#models.py
类工作流(models.Model):
name=models.CharField(最大长度=30)
description=models.TextField(blank=True,null=True)
定义(自我):
返回“{}”.format(self.name)
@类方法
def创建(cls、名称、说明):
新工作流程=cls(
name=name,
描述=描述
)
新建_工作流。保存()

returnnew_workflow
您不需要在Django中的模型类中创建“create”方法。可以通过调用其init方法或使用Class.objects.create()创建新对象。所以你可以:

models.py 然后,要创建“工作流”,您可以使用:

new_obj = Workflow(name="wf name", description="wf description")
new_obj.save()

通常,您可以创建新的类方法,或者根据其他需要覆盖现有的类方法。例如:

class Workflow(models.Model):
    name = models.CharField(max_length=30)
    description = models.TextField(blank=True, null=True)
    deleted = models.DateTimeField(blank=True, null=True)

    @property
    def short_description(self):
        if self.description:
            return "%s..." % self.description[:20]

    # ovewriting the superclass' delete method  
    def delete(self):
        self.deleted = timezone.now()
        self.save()

    def __str__(self):
        return "{}".format(self.name)

您不需要在Django中的模型类中创建“create”方法。可以通过调用其init方法或使用Class.objects.create()创建新对象。所以你可以:

models.py 然后,要创建“工作流”,您可以使用:

new_obj = Workflow(name="wf name", description="wf description")
new_obj.save()

通常,您可以创建新的类方法,或者根据其他需要覆盖现有的类方法。例如:

class Workflow(models.Model):
    name = models.CharField(max_length=30)
    description = models.TextField(blank=True, null=True)
    deleted = models.DateTimeField(blank=True, null=True)

    @property
    def short_description(self):
        if self.description:
            return "%s..." % self.description[:20]

    # ovewriting the superclass' delete method  
    def delete(self):
        self.deleted = timezone.now()
        self.save()

    def __str__(self):
        return "{}".format(self.name)