[英]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.