模型设计django

时间:2020-02-19 18:59:46

标签: django django-models

该模型如下所示。其中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作为选择的字段,以后可以增加。此外,每个应用程序选择(app1app2)都应该是一个模型,其中的字段代表功能。如何在Django模型中实现此功能。

app1

1 个答案:

答案 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”)。然后,每个要素都包含数据。