【问题标题】:Table as field in model表作为模型中的字段
【发布时间】:2020-02-19 16:49:44
【问题描述】:

我有这样的模型:

class Department(models.Model):
    name = models.CharField(max_length=30)
    schedule = models.ForeignKey('Schedule', on_delete=models.CASCADE)


class Schedule(models.Model):
    post_name = models.CharField(max_length=30)
    shift_start = models.TimeField(auto_now=False, auto_now_add=False)
    shift_end = models.TimeField(auto_now=False, auto_now_add=False)

每个部门都有一个时间表 - 每个帖子都有一些 [post_name, shift_start, shift_end] 行。如果使用ForeignKey,将只有一行而不是一个列表。是否可以创建一些Schedule 表并将每个表与某些Department 链接?

【问题讨论】:

    标签: django orm model


    【解决方案1】:

    外键定义模型之间的 1 对 N 关系。如果我理解正确,您希望 1 个部门有 N 个时间表。为了实现这一点,每个时间表都应该有一个外键来定义它属于哪个部门。

    因此,您应该为此使用 ForeignKey,但将其放入您的 Schedule 模型中。

    它应该是这样的:

    class Department(models.Model):
        name = models.CharField(max_length=30)
    
    
    class Schedule(models.Model):
        post_name = models.CharField(max_length=30)
        shift_start = models.TimeField(auto_now=False, auto_now_add=False)
        shift_end = models.TimeField(auto_now=False, auto_now_add=False)
        department = models.ForeignKey(Department, on_delete=models.CASCADE, related_name='schedules')
    

    然后,在您为该部门创建了一个部门和几个时间表后,您可以像这样访问它们: (假设创建的部门主键是 1)

    Department.objects.get(pk=1).schedules.all()
    

    【讨论】:

      猜你喜欢
      • 2012-03-02
      • 2013-01-28
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      相关资源
      最近更新 更多