我应该在django中使用oneToMnay还是ManyToMany

snz8szmq  于 2023-01-10  发布在  Go
关注(0)|答案(1)|浏览(114)

我是新的django,并试图创建一个网站,我可以搜索车辆,看看我有什么零件,为这辆车。
我有两个数据库,一个是车辆数据库,一个是零件数据库:

class Vehicle(models.Model):
vehicle_id = models.BigIntegerField(primary_key=True)
vehicle = models.CharField(max_length=255)

def __str__(self):
    return self.vehicle

class Part(models.Model):
part_id = models.BigIntegerField(primary_key=True, db_column='part_id')
part_name = models.CharField(max_length=255, db_index=True, null=True)
catalog_code = models.CharField(max_length=255, null=True)
price = models.CharField(max_length=255, default=None, null=True)
description = models.CharField(max_length=255, default=None, null=True)
vehicle_id = models.ForeignKey(Vehicle, on_delete=models.PROTECT, null=True)

def __str__(self):
    return self.part_name

现在我使用oneToMany,但无法确定它是否正确,以及如何查看一辆车的所有零件

jucafojl

jucafojl1#

1.您正确地实现了关系。一对多是一种方法。
1.您可以通过在ForeighKey中定义related_name来简化您的工作:

vehicle_id = models.ForeignKey(Vehicle, on_delete=models.PROTECT, null=True, related_name="parts")

并在提及车辆部件时使用以下结构:

myvehicle.parts.all()
myvehicle.parts.filter(part__part_id=1)

1.旁注:我不认为显式定义id字段是个好主意,Django会自动设置模型id字段(并将其定义为主键)。

相关问题