如何根据从另一个table数据中获取的id获取table数据(包括子table和子子数据)?姜戈
How to get table data (including child table and sub child data) based on id which obtains from another table data? Django
观看次数
company = Company.objects.get(id = company_id) # getting input from django urls (<int:company_id>)
vehicles = CompanyContainVehicles.objects.filter(company_id=company.id) # Give all rows having same id (company.id)
all_vehicles = Vehicle.objects.filter(companies=company) # Gives all row with id provide by company
all_vehicles_parts = VehiclePart.objects.filter(__________) # Not Working
型号
class Company(models.Model):
name = models.CharField(max_length=255)
slug = models.SlugField(blank=True, null=True, unique=True)
description = models.TextField()
class Vehicle(models.Model):
vehicle_number = models.IntegerField()
name = models.CharField(max_length=255)
slug = models.SlugField(blank=True, null=True, unique=True)
companies = models.ManyToManyField(
Company,
through='CompanyVehicle',
related_name='companies'
)
class CompanyVehicle(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
vehicle = models.ForeignKey(Vehicle, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
class VehiclePart(models.Model):
id = models.AutoField(primary_key=True)
vehicle = models.ForeignKey(Vehicle, on_delete=models.CASCADE)
type = models.ForeignKey(PartType, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True, blank=True)
我如何用他们的载具获得 VehiclePart? (我想我会把所有数据都放在一个变量中,我们应该将它分开并与他们的车辆相加)。另外,如果 VehiclePart 包含一个名为 VehiclePartDetail 的子 class,我们可以做什么来访问数据?
I think I will give all the data in a variable and we should divide it and add with their Vehicle
.
你不必。 Django 可以反向读取 ForeignKey
关系。您可以查询:
qs = Vehicle.objects<strong>.prefetch_related('vehiclepart_set')</strong>
然后您可以枚举查询集,并且对于每个 Vehicle
对象,使用 .vehiclepart_set.all()
访问它。例如:
for item in qs:
print(vehicle_name)
for part in item<strong>.vehiclepart_set.all()</strong>:
print(part.id)
观看次数
company = Company.objects.get(id = company_id) # getting input from django urls (<int:company_id>)
vehicles = CompanyContainVehicles.objects.filter(company_id=company.id) # Give all rows having same id (company.id)
all_vehicles = Vehicle.objects.filter(companies=company) # Gives all row with id provide by company
all_vehicles_parts = VehiclePart.objects.filter(__________) # Not Working
型号
class Company(models.Model):
name = models.CharField(max_length=255)
slug = models.SlugField(blank=True, null=True, unique=True)
description = models.TextField()
class Vehicle(models.Model):
vehicle_number = models.IntegerField()
name = models.CharField(max_length=255)
slug = models.SlugField(blank=True, null=True, unique=True)
companies = models.ManyToManyField(
Company,
through='CompanyVehicle',
related_name='companies'
)
class CompanyVehicle(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
vehicle = models.ForeignKey(Vehicle, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
class VehiclePart(models.Model):
id = models.AutoField(primary_key=True)
vehicle = models.ForeignKey(Vehicle, on_delete=models.CASCADE)
type = models.ForeignKey(PartType, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True, blank=True)
我如何用他们的载具获得 VehiclePart? (我想我会把所有数据都放在一个变量中,我们应该将它分开并与他们的车辆相加)。另外,如果 VehiclePart 包含一个名为 VehiclePartDetail 的子 class,我们可以做什么来访问数据?
I think I will give all the data in a variable and we should divide it and add with their
Vehicle
.
你不必。 Django 可以反向读取 ForeignKey
关系。您可以查询:
qs = Vehicle.objects<strong>.prefetch_related('vehiclepart_set')</strong>
然后您可以枚举查询集,并且对于每个 Vehicle
对象,使用 .vehiclepart_set.all()
访问它。例如:
for item in qs:
print(vehicle_name)
for part in item<strong>.vehiclepart_set.all()</strong>:
print(part.id)