Python 向Django模型添加方法
我正在构建我的第一个GraphQL变种。最初,我使用找到的示例代码构建了它。但现在我正在对它进行重构,使其具有更好的结构。虽然代码似乎运行良好,因为我对Django比较陌生,但我不确定我使用的方法是否是Django/Python的最佳实践 这是我的相关代码: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) 定义(自我)
#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)