首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何同时添加具有外键的多个项,但我希望稍后在Django中分配它们?

如何同时添加具有外键的多个项,但我希望稍后在Django中分配它们?
EN

Stack Overflow用户
提问于 2021-01-26 11:49:16
回答 1查看 52关注 0票数 0

假设我们在Django有三种型号

网络组模型端口模型服务类型模型

注意: Network类似于有24个端口的修补程序面板(对于熟悉网络的用户来说)

每个网络组通常有24个端口,每个端口属于一个网络组。

但是每个端口都有服务类型(例如:接入点、电视等)每种服务类型都有一个端口。

因此,当我创建Network时,我会自动生成24个端口,但我不知道如何使服务类型的外键为空,因此我可以在需要时分配它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-26 12:35:34

你想错了。试着这样做:

代码语言:javascript
运行
复制
Class NetworkGroup(models.Model):
    name = models.CharField(max_length=30)

Class ServiceType(models.Model):
    name = models.CharField(max_length=30)

Class Port(models.Model):
    network_group = models.ForeignKey('NetworkGroup', on_delete=models.CASCADE, related_name='network_ports')
    service_type = models.ForeignKey('ServiceType', on_delete=models.CASCADE, related_name='service_ports')
    ...

首先添加网络实例和服务实例。然后,您可以创建端口,并将它们与foreignkey连接起来。这是正确的做法。

如果您想过滤:

代码语言:javascript
运行
复制
Port.objects.filter(network_group.name = 'network1') # all ports belong to 'network1'
Port.objects.filter(service_type.name = 'tv') # all ports have service type 'tv'
Port.objects.filter(network_group.name = 'network1', service_type.name = 'tv') # network1 and tv ports
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65900816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档