Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
310 views
in Technique[技术] by (71.8m points)

mysql - How can I add multiple items at the same time that have foreign key but I want to assign them later in Django?

Let's say We have 3 Models in Django

Network Group Model, Ports Model and Service Type Model.

Note: Network Group is like the patch panel that have 24 ports (For Poeple who knows networking)

Each Network Group has usually 24 Ports and each Port belongs to One Network Group.

But Each Port have Service Type (ex: Access Point, TV, etc..) and Each Service Type has one Port.

So I m when I m creating Network Group I m generating 24 ports automatically but I don't know how to make the foreign key of service type null so I can assign it once I need it.

question from:https://stackoverflow.com/questions/65900816/how-can-i-add-multiple-items-at-the-same-time-that-have-foreign-key-but-i-want-t

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You are thinking it in the wrong way. Try to do like this:

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')
    ...

First add network instance and service instance. Then you can create port and link them with foreignkey. This is the proper way of doing it.

If you want to filter:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...