该模型如下所示。其中CreateHouseDTO{
name:'Test',
floors[ {} ]
}
是只能包含
//My DTOs
import {ValidateNested, IsString, IsArray} from "class-validator";
import {Body, Controller, Post} from "@nestjs/common";
export class CreateHouseDTO {
@IsNotEmpty()
@IsString()
public name?: string;
@ValidateNested({each: true})
@IsArray()
@IsNotEmpty()
public floors?: CreateFloorDTO[];
}
export class CreateFloorDTO {
@IsString()
@IsNotEmpty()
public name?: string;
@ValidateNested({each: true})
@IsNotEmpty()
@IsArray()
public rooms?: CreateRoomDTO[];
}
export class CreateRoomDTO {
@IsString()
@IsNotEmpty()
public name?: string;
}
//My Controller
@Controller("house")
export class HouseController {
@Post()
async create(
@Body()
body: CreateHouseDTO
) {
console.log(body); //output I mentioned
return body;
}
}
和apps
作为选择的字段,以后可以增加。此外,每个应用程序选择(app1
,app2
)都应该是一个模型,其中的字段代表功能。如何在Django模型中实现此功能。
app1
答案 0 :(得分:1)
听起来您需要many-to-many关系。 “多对多”字段会将选择限制为您创建的模型,因此,如果您只有2个应用程序,则这些将是您唯一的选择。当您添加更多时,它们将出现。
所以,我想你想要这样的东西:
您说“ apps”是一个字段,因此如果它是父模型上的一个字段。
Class Foo(models.Model):
apps = models.ManyToManyField(App)
Class App(models.Model):
name = models.Charfield(max_legnth=100) #App name
features = models.ManytoManyField(Feature)
Class Feature(models.Model):
name = models.Charfield(max_legnth=100) #Feature name
...... # Your data fields here.
您的父类将有一个多对多字段(“ apps”)链接到您想要的所有应用程序,然后每个应用程序都将链接到您需要的每个功能(“ features”)。然后,每个要素都包含数据。