models.py中的函数是否应该驻留在类之外?

时间:2017-11-04 06:57:15

标签: python django class django-models

在我的models.py中,我有几个课程,还有几个经理课程 我有一些方法是模型使用的一般方法,但不一定是它的一部分。

例如:

def profile_photo_upload_loc(instance, filename):
        return "profile_photo/%s/%s" % (instance.user, filename)

class Profile(models.Model):
    profile_photo = models.ImageField(
        upload_to=profile_photo_upload_loc,
        null=True,
        blank=True,
        width_field='width_field',
        height_field='height_field',
        verbose_name='Profile Image',
    )  

在模型文件中的类之外是否可以使用独立函数?什么时候适当,什么时候应该在课堂上?

2 个答案:

答案 0 :(得分:4)

独立功能是可以在多个模型中使用的功能,例如您编写的功能可用于其他模型图像上传,

函数那些写在模型类中的函数只能用于那个模型实例,而不能用于其他模型,

如果您尝试将函数与其他模型实例一起使用,则会出现错误

答案 1 :(得分:2)

一般来说,Django和python在这种自由主义方法中更为允许。

我自己更喜欢保留仅与其相关的模型方法。比如“这个人的年龄是多少?”你过他的生日并且很重要。这很简单,但您可以使用更多Java方法,并将所有方法和其他业务规则和逻辑保留在服务中。我发现在处理一个我认为可能会变大的python项目时最好模拟一个Java项目,但是保持大多数脚本是自包含的并且与一个好的API进行通信。

另外,我为每个脚本保留了一个测试过程,因为python不会告诉你在调用方法canceled()时你写了一个额外的L,或者该方法仍然存在于另一个文件中的一个类中通过引用传递函数和参数。