[英]How to make dynamically parameters django models fields
這段代碼是許多人的抽象類
Class Base (models.Model):
Created_by = models.ForeignKey(User)
Modified_by = models.ForeignKey(User, null=True)
我想要這樣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__
方法中創建該字段,但是它不起作用)。
如果您可以使用子類名稱而不是default_related_name,那么它很簡單:
related_name="%(class)s_created"
https://docs.djangoproject.com/en/1.8/topics/db/models/#be-careful-with-related-name
另外,由於基類是抽象模型,因此您需要
class Meta:
abstract = True
預保存信號就是您想要的。
供參考: https : //docs.djangoproject.com/en/1.11/ref/signals/#pre-save
在將其保存到數據庫之前,您可以應用所需的所有更改。 :)
這是一個示例,其中我將每個單詞的首字母大寫並創建一個詞條。
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.