一个域名监控
思路如下
域名 -> IP -> IP 段
但是 IP 与 IP 段都分别有 v4 与 v6 的 且域名可能同时拥有 v4 与 v6 的 IP
想了半天也不知道怎么去设计
看了很多 Django 的多对多(ManyToManyField) 的文章也弄不懂
如下代码 Domain
类里面的属性 ip
是不是应该用多对多的方式
方法一的代码是不是不应该这样子写的
方法一
class IPv4Range(models.Model):
ipv4_range = models.CharField(max_length=20)
last_update = models.DateTimeField(auto_now_add=True)
class IPv6Range(models.Model):
ipv6_range = models.CharField(max_length=40)
last_update = models.DateTimeField(auto_now_add=True)
class IPv4Address(models.Model):
iprange = models.ForeignKey('IPv4Range', on_delete=models.PROTECT)
ipv4 = models.CharField(max_length=20)
last_update = models.DateTimeField(auto_now_add=True)
class IPv6Address(models.Model):
iprange = models.ForeignKey('IPv6Range', on_delete=models.PROTECT)
ipv6 = models.CharField(max_length=40)
last_update = models.DateTimeField(auto_now_add=True)
class Domain(models.Model):
ip = models.ForeignKey(IPv4Address, on_delete=models.PROTECT)
domain = models.CharField(max_length=255)
checked = models.BooleanField(default=False)
keyword = models.CharField(max_length=255)
add_date = models.DateTimeField(auto_now_add=True)
last_update = models.DateTimeField(auto_now=True)
方法二
class IPRange(models.Model):
ipv4_range = models.CharField(max_length=20, null=True)
ipv6_range = models.CharField(max_length=40, null=True)
last_update = models.DateTimeField(auto_now_add=True)
class IPAddress(models.Model):
iprange = models.ForeignKey('IPRange', on_delete=models.PROTECT)
ipv4 = models.CharField(max_length=20, null=True)
ipv6 = models.CharField(max_length=40, null=True)
last_update = models.DateTimeField(auto_now_add=True)
class Domain(models.Model):
ip = models.ForeignKey(IPAddress, on_delete=models.PROTECT)
domain = models.CharField(max_length=255)
checked = models.BooleanField(default=False)
keyword = models.CharField(max_length=255)
add_date = models.DateTimeField(auto_now_add=True)
last_update = models.DateTimeField(auto_now=True)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.