我对Django模型有问题。我有位置,机器和零件。
class location(models.Model):
name = models.CharField(max_length=30, unique=True)
description = models.CharField(max_length=100)
class machine(models.Model):
name = models.CharField(max_length=100)
descirption = models.CharField(max_length=255)
location = models.ForeignKey(location, on_delete=models.CASCADE, related_name='machine')
class partitem(models.Model):
itemNumber = models.CharField(max_length=100)
descirption = models.CharField(max_length=255)
machine = models.ForeignKey(machine, on_delete=models.CASCADE, related_name='machine')
procedureDefault = models.CharField(max_length=255)
attachmentDefault = models.FileField(upload_to='uploads/%Y/%m/%d/')
如果某些机器的零件和附件与默认零件不同,如何定义零件的附件和过程?
procedureForEachMachine = models.CharField(max_length=255)
attachmentForEachMachine = models.FileField(upload_to='uploads/%Y/%m/%d/')
答案 0 :(得分:0)
这似乎是ManyToMany relationship with extra fields的情况。
这是因为附件和过程不是Partitem
属性,而是每个Machine x Partitem关系所独有的(尽管在大多数情况下,它将假定默认值仅取决于Partitem)。
就像这样:
class Machine(models.Model):
name = models.CharField(max_length=128)
class PartItem(models.Model):
machine = models.ManyToManyField(Machine, through='MachinePartItem')
class MachinePartItem(models.Model):
machine = models.ForeignKey(Machine, on_delete=models.CASCADE)
part_item = models.ForeignKey(PartItem, on_delete=models.CASCADE)
procedureDefault = models.CharField(max_length=255)
attachmentDefault = models.FileField(upload_to='uploads/%Y/%m/%d/')