Python 我如何在Django模型中表示这一点?

Python 我如何在Django模型中表示这一点?,python,django,django-models,data-modeling,Python,Django,Django Models,Data Modeling,我很难确定与此的关系是什么: class Airport(models.Model): airlines = models.ManyToManyField(Airline) class Airline(models.Model): terminal = models.CharField(max_length=200) 问题是,根据请求的机场不同,每个航空公司都与不同的终端相关联,所以终端不能只是静态文本 有人知道最好的建模方法是什么吗 感谢等级机场(models.Model)

我很难确定与此的关系是什么:

class Airport(models.Model):
    airlines = models.ManyToManyField(Airline)

class Airline(models.Model):
    terminal = models.CharField(max_length=200)
问题是,根据请求的机场不同,每个航空公司都与不同的终端相关联,所以终端不能只是静态文本

有人知道最好的建模方法是什么吗

感谢
等级机场(models.Model):
航空公司=型号。曼尼托曼尼菲尔德(航空公司)
终端=型号.CharField(最大长度=200)

我认为只使用一个类就可以解决您的问题,而不是使用一个类机场(models.Model): 航空公司=型号。曼尼托曼尼菲尔德(航空公司) 终端=型号.CharField(最大长度=200)


我想用一门课就可以解决你的问题了。奇怪的是,有这么多不同的答案,我想每个人都有自己的偏好。我会这样做:

class Airport(models.Model):
    name = models.CharField(max_length=200)

class Airline(models.Model):
    name = models.CharField(max_length=200)
    terminals = models.ManyToManyField('Terminal', related_name='airlines')

class Terminal(models.Model):
    name = models.CharField(max_length=200)
    airport = models.ForeignKey('Airport', related_name='terminals')
这允许并假设以下条件:

  • 一家航空公司可以在一家或几家航空公司中存在 给定机场中的更多航站楼
  • 一个终端可以有一个或多个 航空公司
  • 终端只能存在于中 单一机场
请注意,在此设置中,机场和航空公司始终通过终端间接链接。我个人认为这是一个特性,而不是一个bug。机场始终至少有一个航站楼,即使航站楼是整个机场

或 <> P>你可以认为从逻辑的观点来看,它是稍微正确的,来创建这样的模型:

class Airport(models.Model):
    name = models.CharField(max_length=200)

class Airline(models.Model):
    name = models.CharField(max_length=200)

class Terminal(models.Model):
    name = models.CharField(max_length=200)
    airport = models.ForeignKey('Airport', related_name='terminals')
    airlines = models.ManyToManyField('Airline', related_name='terminals')

实际上,数据的行为基本相同。然而,有人可以提出一个论点,认为航站楼拥有“航空公司”在概念上比给定的航空公司拥有航站楼更有意义。毕竟,航空公司不包含航站楼,但每个航站楼都包含这些航空公司。

令人惊讶的是,有这么多不同的答案,我想每个人都有自己的偏好。我会这样做:

class Airport(models.Model):
    name = models.CharField(max_length=200)

class Airline(models.Model):
    name = models.CharField(max_length=200)
    terminals = models.ManyToManyField('Terminal', related_name='airlines')

class Terminal(models.Model):
    name = models.CharField(max_length=200)
    airport = models.ForeignKey('Airport', related_name='terminals')
这允许并假设以下条件:

  • 一家航空公司可以在一家或几家航空公司中存在 给定机场中的更多航站楼
  • 一个终端可以有一个或多个 航空公司
  • 终端只能存在于中 单一机场
请注意,在此设置中,机场和航空公司始终通过终端间接链接。我个人认为这是一个特性,而不是一个bug。机场始终至少有一个航站楼,即使航站楼是整个机场

或 <> P>你可以认为从逻辑的观点来看,它是稍微正确的,来创建这样的模型:

class Airport(models.Model):
    name = models.CharField(max_length=200)

class Airline(models.Model):
    name = models.CharField(max_length=200)

class Terminal(models.Model):
    name = models.CharField(max_length=200)
    airport = models.ForeignKey('Airport', related_name='terminals')
    airlines = models.ManyToManyField('Airline', related_name='terminals')
实际上,数据的行为基本相同。然而,有人可以提出一个论点,认为航站楼拥有“航空公司”在概念上比给定的航空公司拥有航站楼更有意义。毕竟,航空公司不包含航站楼,但每个航站楼都包含这些航空公司