Django:用于固定镜头。模型列表关系,是否可以在父模型中使用固定数量的 OneToOneField 而不是在子模型中使用 FK?



我正在设计一个基于周的菜单应用程序。我想知道我是否应该这样做:

class MenuWeek(models.Model):
    sunday = OneToOneField("MenuDay")
    monday = OneToOneField("MenuDay")
    #etc through Saturday
class MenuDay(models.Model):
    # some stuff here, but not a foreign key to MenuWeek

而不是:

class MenuDay(models.Model):
    week = ForeignKey("MenuWeek") # (with no OneToOne's defined in MenuWeek)

第一种方法是实现父和子之间的短"固定长度"列表关系的好方法,还是我应该在MenuDay中坚持使用ForeignKey并通过表单验证强制长度?我在想,第一种方式可能会让行政部门更干净,因为你可以清楚地知道你是在一周中的哪一天编辑。

谢谢

我永远不会使用你的第一个选项。为了在每个工作日运行特定的代码段,您将在各处重复自己的工作。第二个选项将会产生更好的代码。

首先,第二个选项要好得多。但是,您甚至可以摆脱MenuWeek,只是在MenuDay中添加日期或星期字段,并以这种方式进行过滤,除非MenuWeek应该保存一些数据。

最新更新