[英]Django: Auto Generate a CharField using data from another CharField
我有兩個charfields, name
和url
。 name
就像“我的組”,我希望url
字段自動從name
條目派生。 所以它會像“my_group”。
這就是我試圖實現這一目標的方法,但它不起作用。
name = models.CharField(max_length=140)
url = models.CharField(max_length=140, default=name.replace (" ", "_"))
有任何想法嗎?
class MyModel(models.Model):
name = models.CharField(max_length=140)
url = models.CharField(max_length=140)
def save(self, *args, **kwargs):
self.url = self.name.replace(' ', '_').lower()
super(MyModel, self).save(*args, **kwargs)
也可以看看:
另請注意,擁有一個只是模型另一個字段的邏輯轉換的字段基本上表明您正在做錯事。 考慮在模型上使用property
或自定義方法(例如get_url()
)。
1)您可以將url
轉換為模型的@property :
name = models.CharField(max_length=140)
@property
def url(self):
return self.name.replace(" ", "_").lower()
2)或覆蓋模型的保存方法:
name = models.CharField(max_length=140)
url = models.CharField(max_length=140)
def save(self, *args, **kwargs):
self.url = self.name.replace(" ", "_").lower()
super(ModelName, self).save(*args, **kwargs)
兩者之間的區別在於, 1中的url
不會保存到數據庫中,而在2中則是。 根據您的情況更好地實施。
如果你正在使用django admin,你可以將它搞砸。
在您的模型中,您將擁有:
name = models.CharField(max_length=140)
slug = models.CharField()
然后在admin.py中:
class YourModelAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("name",)}
admin.site.register(YourModel, YourModelAdmin)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.