簡體   English   中英

Django模型:多個外鍵或一對一字段

[英]Django Model: Multiple foreign keys or one to one field

我在Django模型中的關系概念上遇到問題。

讓我們看看我的例子:

我將此表/類放入models.py中:

class PacketEventsInformation(models.Model):

ID_IP_Source = models.<Relationship>(Ips, on_delete=models.CASCADE)
ID_IP_Dest = models.<Relationship>(Ips, on_delete=models.CASCADE)
ID_Source_Port = models.<Relationship>(Ports, on_delete=models.CASCADE)
ID_Dest_Port = models.<Relationship>(Ports, on_delete=models.CASCADE)
Protocol = models.CharField(max_length=20)
ID_Source_MAC = models.<Relationship>(Macs, on_delete=models.CASCADE)
ID_Dest_MAC = models.<Relationship>(Macs, on_delete=models.CASCADE)
RAW_Info = models.TextField()
TAG = models.ForeignKey(Tags, on_delete=models.CASCADE)

def __str__(self):
    return '%s' % self.id

此時,我定義了我所有ID字段與另一個表/類(Pkey)(例如ForeignKey)的ID字段之間的關系。

好吧,如果我執行遷移到我的終端,我得到以下信息:

./manage.py migrate 
app.PacketEventsInformation.ID_Dest_MAC: (fields.E304) Reverse accessor for 'PacketEventsInformation.ID_Dest_MAC' clashes with reverse accessor for 'PacketEventsInformation.ID_Source_MAC'.
......

我了解ManyToMany,OneToOne和OnetoMany(外鍵)的定義,但是我不知道為什么不能這樣做。 也許答案可能是使用該Fkey創建中間表,或者在該ID之間建立OneToOne關系。

感謝您的回答=)

PD:

ID_IP_Source / Dest可以相同

ID_Source / Dest_Port可以相同

ID_Source / Dest_MAC可以相同

在Django中,當有多個指向同一模型的外鍵時,需要使用related_name進行區分:

ID_IP_Source = models.<Relationship>(Ips, on_delete=models.CASCADE, related_name="id_ip_source")
ID_IP_Dest = models.<Relationship>(Ips, on_delete=models.CASCADE, related_name="id_ip_dest")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM