2017-07-31 62 views
0

該代碼可用於許多如何動態地使參數Django模型領域

Class Base (models.Model): 
    Created_by = models.ForeignKey(User) 
    Modified_by = models.ForeignKey(User, null=True) 

我想related_name這樣related_name = self.default_related_name + '_name_field' 如下面的

Class Base(models.Model): 
    Created_by = models.ForeignKey(User, 
     related_name = self.default_related_name + '_created_by') 
    Modified_by = models.ForeignKey(User, 
     null = True, 
     related_name = self.default_related_name + '_modified_by') 

一個抽象類,但我知道,我不能有權訪問類的屬性中的實例。 那麼我能用重載方法(或屬性)創建一個字段的方法是什麼? (我試圖在__init__方法中創建該字段,但它不起作用)。

回答

0

Pre保存信號是你正在尋找。

供參考:https://docs.djangoproject.com/en/1.11/ref/signals/#pre-save

權將其保存到數據庫之前,你可以將所有你想要的改變。 :)

這裏是一個例子,我大寫每個單詞的第一個字母,並創建一個slu。。

def pre_save_city(sender, instance, *args, **kwargs): 
instance.name = instance.name.title() 
if not instance.slug: 
    instance.slug = slugify(instance.name) 

你這是怎麼運行的功能:

pre_save.connect(pre_save_city,sender=City) 
+0

不,我解釋我的問題可能不好,我想動態創建參數'related_name'的值以避免錯誤(fields.E304) – Hugo