如何编写自引用Django模型?

我有一个Django模型“ Inspection”,它具有:

InspectionID (PK)
PartID
SiteID
Date
Comment
Report
Signiture

我希望检验ID和日期之间具有一对多的关系。因此,一个ID可以在许多日期进行检查。我该怎么做?我目前有以下内容:

class Inspection(models.Model):
    InspectionID = models.IntegerField(primary_key=True,unique=True)
    PartID = models.ForeignKey('Part',on_delete=models.CASCADE)
    SiteID = models.ForeignKey('Site',on_delete=models.CASCADE)
    Date = models.DateField(auto_now=False,auto_now_add=False)
    Comment = models.CharField(max_length=255,blank=True)
    Report = models.FileField(upload_to='docs',null=True,blank=True)
    Signiture = models.CharField(max_length=255,blank=True)

我曾考虑过使用models.ForeignKey,但我真的不知道如何在这种情况下正确实现它。

lxmforyou 回答:如何编写自引用Django模型?

  

我希望检验ID和日期之间具有一对多的关系。

您创建一个额外的模型,例如:

class InspectionDate(models.Model):
    inspection = models.ForeignKey(
        Inspection,on_delete=models.CASCADE,related_name='inspectiondates'
    )
    date = models.DateField()

因此,您可以为给定的InspectionDate创建Inspection

或者,如果您想添加额外的数据,最好定义一个InspectionGroup模型:

class InspectionGroup(models.Model):
    pass

class Inspection(models.Model):
    id = models.AutoField(primary_key=True,unique=True,db_column='InspectionId')
    inspectiongroup = models.ForeignKey(InspectionGroup,db_column='InspectionGroupId')
    part = models.ForeignKey('Part',db_column='PartId')
    site = models.ForeignKey('Site',db_column='SiteId')
    date = models.DateField(db_column='Date')
    comment = models.CharField(max_length=255,blank=True,db_column='CommentId')
    report = models.FileField(upload_to='docs',null=True,db_column='ReportId')
    signiture = models.CharField(max_length=255,db_column='Signature')
  

注意:属性名称通常用snake_case [wiki]而不是 PerlCase {camelCase

,

您可以将“ 自身Foriegnkey ”存储为

class Inspection(models.Model):
    InspectionID = models.IntegerField(primary_key=True,unique=True)
    PartID = models.ForeignKey('Part',on_delete=models.CASCADE)
    SiteID = models.ForeignKey('Site',on_delete=models.CASCADE)
    Date = models.DateField(auto_now=False,auto_now_add=False)
    Comment = models.CharField(max_length=255,blank=True)
    Report = models.FileField(upload_to='docs',blank=True)
    Signiture = models.CharField(max_length=255,blank=True)
    inspection_id = models.ForeignKey('self',blank=True)
本文链接:https://www.f2er.com/3065453.html

大家都在问