Django - 通过关系多对多

时间:2014-12-16 21:46:35

标签: django django-models many-to-many django-orm

我的机器轮班工作。每个机器都有自己的班次,可以有不同的持续时间。这些是Django中的模型:

class Shift(models.Model):
    name = models.CharField(max_length=50)


class Machinery(models.Model):
    name = models.CharField(max_length=100)
    code = models.CharField(max_length=30)

    shifts = models.ManyToManyField(Shift, through='MachineryShift')


class MachineryShift(models.Model):
    machinery = models.ForeignKey('Machinery')
    shift = models.ForeignKey('Shift')

    shift_start_time = models.TimeField()
    shift_end_time = models.TimeField()

我需要每台机械都有自己的一套移动设备,这些模型符合要求,但感觉它不是最好的解决方案。

有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:1)

我认为class Shift不是实际上。既然如此,那么只需要为班次命名,也可以在class MachineryShift中完成。

class Machinery(models.Model):
    name = models.CharField(max_length=100)
    code = models.CharField(max_length=30)

class MachineryShift(models.Model):
    machinery = models.ForeignKey('Machinery')
    shift = models.Charfield(max_length=50)
    shift_start_time = models.TimeField()
    shift_end_time = models.TimeField()

这样,您可以根据需要为机器添加任意数量的班次。每台机器都有自己的一组班次。