2017-11-04 102 views
2

在我的models.py中,我有幾個類和幾個經理類。
我有一些方法是模型使用的一般方法,但不一定是它的一部分。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', 
    ) 

是不是好有在模型文件中的類之外的獨立的功能呢?什麼時候是合適的,什麼時候職能應該在班上?

回答

4

獨立的功能是它可以在多種模式中使用這些功能,就像你寫可以在其他模型的圖片上傳使用的功能,

功能的那些模型類裏面寫的是那些其只能與模型的實例,而不是與其他機型上使用,

如果您嘗試使用與其他模型實例函數,它會給一個錯誤

2

Django和蟒蛇,在一般情況下,是更允許用這種自由主義的方式。

我自己更喜歡保留與其相關的模型方法。像「這個人的年齡是多少?」你拿他的生日和計數。儘管如此,但您可以使用更多的Java方法,並將所有方法和其他業務規則和邏輯保存到服務中。我發現在處理一個我認爲可能會變大的python項目時最好模擬一個Java項目,但保持大多數腳本自包含並與一個良好的API進行通信。

另外,我爲每個腳本保留一個測試過程,因爲python不會告訴你在調用方法canceled()時寫了一個額外的L,或者如果該方法仍然存在於將被執行的另一個文件中的類中功能和參數通過參考。

相關問題