我创建了以下测试模型.该模型包含具有默认值的各种字段.
class TestModel(models.Model):
name = models.CharField(max_length=32)
x = models.IntegerField(default=0)
y = models.IntegerField(default=1, null=True)
z = models.IntegerField(default=0, null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
之后,我运行迁移命令,并在迁移代码后导出Django.如您所见,默认值使用默认参数填充.
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='TestModel',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.CharField(max_length=32)),
('x', models.IntegerField(default=0)),
('y', models.IntegerField(default=1, null=True)),
('z', models.IntegerField(default=0, null=True, blank=True)),
],
),
]
Run Code Online (Sandbox Code Playgroud)
最后,我使用Django的迁移命令获得了MySQL代码.
BEGIN;
CREATE TABLE `base_testmodel` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`name` varchar(32) NOT NULL,
`x` integer NOT NULL,
`y` integer NULL,
`z` integer …Run Code Online (Sandbox Code Playgroud) 我有一个REST API控制器,如下面的代码.如果我使用@valid注释,则控制客户实体的每个字段以进行验证.
@ResponseBody
@RequestMapping(value = API.UPDATE_CLIENT, produces = ResponseType.JSON, method = RequestMethod.POST)
public HashMap update(
@PathVariable(value = "id")int id,
@RequestBody Client clientData
) {
clientLogic.update(id, clientData);
....
}
Run Code Online (Sandbox Code Playgroud)
客户的实体包含大约5个字段(ID,姓名,地址,电子邮件,电话).当我更新此记录时,我不会在RequestBody中发送所有5个字段.我只想验证来自RequestBody.