如果我在django中有以下模型;
class MyModel(models.Model):
name = models.CharField(max_length=50)
fullname = models.CharField(max_length=100,default=name)
如何将fullname字段设为默认名称?就像现在一样,fullname默认为CharField名称的字符串表示。
示例:
new MyModel(name='joel')
将'joel'作为name和fullname,而
new MyModel(name='joel',fullname='joel karlsson')
会产生不同的名称和全名。
答案 0 :(得分:7)
我想知道你是否最好通过模型上的方法做到这一点:
class MyModel(models.Model):
name = models.CharField(max_length=50)
fullname = models.CharField(max_length=100)
def display_name(self):
if self.fullname:
return self.fullname
return self.name
也许这不是display_name
,而应该是__unicode__
方法。
如果你真的想做你所问过的事情,那么你不能使用default
- 在你的表格上使用clean
方法(或者你的模型,如果你'使用新的model validation(自Django 1.2以来可用)。
像这样的东西(用于模型验证):
class MyModel(models.Model):
name = models.CharField(max_length=50)
fullname = models.CharField(max_length=100,default=name)
def clean(self):
self.fullname=name
或者像这样(用于表单验证):
class MyModelForm(ModelForm):
class Meta:
model = MyModel
def clean(self):
cleaned_data = self.cleaned_data
cleaned_data['fullname'] = cleaned_data['name']
return cleaned_data
答案 1 :(得分:1)
如何使用默认值进行迁移,然后将自定义数据迁移添加到迁移文件中?这是一个完整的迁移文件示例:
free_credits_added_on
此处next_billing
字段设置为现有{{1}}字段前30天。