我偶然发现了一个问题,我无法为我的生活找到问题。我甚至与一位数据处理教授谈过,而没有接近解决方案。所以现在我要联系你们,希望得到一些建议。
简而言之,我正在尝试创建一个系统,其中包含有关汽车的信息,汽车可以安装零件。
以下是数据库的规范:
一辆车只有一个车主。车主可以拥有很多车。
车主应能够对其车辆进行分组,以便他可以轻松地将同一部件同时添加到多辆车辆上。然后该小组应该有一个名字。
车辆可以有扬声器,座椅,轮子,所有这些都具有不同的属性。请注意,汽车可能没有这些零件。它也可能有一个以上的部分。
发言人必须包含有关奖品和制造商的信息。 座椅必须包含有关高度,宽度和长度的信息。 车轮必须包含有关直径和制造商的信息。
还必须优先考虑应首先添加哪部分。
我解决这个问题的方法是让一辆车属于一个团体,无论它是否属于一个团体。如果它不属于某个组,它将是该组中唯一的汽车。
我今天要求优先安装部件安装,所以这在我的解决方案中没有实现。
我的模特看起来像这样:
class CarGroup(models.Model):
name = models.CharField(max_length=30)
owner = models.ForeignKey(owners.models.Owner) #Another model
class Car(models.Model):
name = models.CharField(max_length=100, blank=True, null=True)
group = models.ForeignKey(CarGroup)
# Abstract Part Type
class PartType(models.Model):
usedBy = models.ForeignKey(CarGroup)
class Meta:
abstract = True
class Speaker(PartType):
prize = models.DecimalField()
manufacturer = models.CharField(max_length=100)
class Seat(PartType):
height = models.DecimalField()
width = models.DecimalField()
length = models.DecimalField()
class Wheel(PartType):
diameter = models.DecimalField()
manufacturer = models.CharField(max_length=100)
我对此设计的问题是,我不知道如何从数据库中获取数据。如果我有车,并且想要显示属于这辆车的所有零件,我现在必须搜索每个零件表(座位,车轮,扬声器),看看是否有任何物品属于汽车。
这意味着我必须做以下事情:
speakers = Speaker.objects.filter(group=CarGroup.id)
seats = Seat.objects.filter(group=CarGroup.id)
wheels = Whell.objects.filter(group=CarGroup.id)
然后检查这些查询集是否包含任何数据。
我拒绝相信这是我最好的选择。你们有什么建议吗?