我正在为建筑公司开发一个应用程序,我想创建我们的每日时间表。对于这个问题,我有 3 个模型 Date、Construction_site 和 Machinery。我们每天都在多个建筑工地工作,每个 CS 有 3-4 台机器/车辆。
我想要得到这样的东西,但我被模型之间的关系所困扰。
2023-09-21
Construction site 1
Excavator 1
Excavator 2
Truck 1
Construction site 2
Excavator 3
Excavator 4
Truck 2
Construction site 3
Buldozer
Truck 3
2023-09-22
Construction site 1
Excavator 1
Excavator 2
Truck 1
Construction site 2
Excavator 3
Truck 2
Construction site 3
Buldozer
Excavator 4
Truck 3
简化模型:
class Date(models.Model):
date = models.DateField()
class Construction_site(models.Model):
construction_site_name = models.CharField(max_length=50)
date = models.ManyToManyField(Date)
class Machinery(models.Model):
machine_name = models.CharField(max_length=50)
construction_site_name = models.ManyToManyField(Construction_site)
一旦我的模型正确,我需要创建一个视图来显示特定日期的所有建筑工地和使用过的机械。
def date(request):
date = Date.objects.get(id=1)
construction_sites = date.construction_site_set.all()
这将返回特定日期的所有建筑工地,但我无法获得二手机械。
我对 Django 相当陌生,所以欢迎任何帮助。
您按以下关系进行过滤:
def date(request):
matchinery = Machinery.objects.filter(construction_site_name__date__pk=1)
# …
注意:A
not 存储字符串表示形式(或名称) 列中引用的对象,它存储它的记录的主键 列中带有ForeignKey
后缀的引用指向_id
字段。所以ForeignKey
通常不 以ForeignKey
后缀结尾。你可能想要 考虑将_name
字段重命名为construction_site_name
。construction_sites