Django模型:无限域群重复的形式

2024-04-23 10:57:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我这几天在学习django,我需要你的帮助来解决这个关于模板构造的问题。在

假设我有一个名为“活动”的实体,由以下人员组成:

- title: just a char field
- ActivityYears: a couple of start-end years that can be repeated multiple times

活动年由以下部分组成:

^{pr2}$

我的数据库应该是这样的:

^{3}$

这就是前端的样子

Activity title 1
2001 - 2003
2005 - 2006
2007 - 2010

Activity title 2
2011 - 2013
2015 - 2016

and so on

我敢说Activity和ActivityYears是模型,但我不能用恰当的方式将它们联系起来。当我添加一个活动项目时,我应该能够添加尽可能多的开始-结束年份,但如何?在

提前还款


Tags: ofdjango实体模板field人员titleactivity
1条回答
网友
1楼 · 发布于 2024-04-23 10:57:46

您可能希望使用两个具有Foreign Key关系的独立模型。例如:

class Activity(Model):
    id = AutoField(editable=False, primary_key=True, unique=True)
    title = CharField(default="Activity")

class ActivityYear(Model):
    id = AutoField(editable=False, primary_key=True, unique=True)
    year_start = IntegerField(default=1900)
    year_end = IntegerField(default=1999)

    activity_id = ForeignKey(Activity)

通过这个模型设计,我们可以定义每个ActivityYear都有一个成员activity_id,它指向数据库中有效的Activity行的id字段。有了这些信息,您就可以使用相应的Activity对象的id成员从数据库中选择ActivityYear对象:

SELECT * FROM activity_years WHERE activity_id = 1

或者在Django:

activity_years = Activity.objects.filter(activity_id=1)

为了添加映射到特定Activity对象的ActivityYear对象,可以使用以下方法:

^{pr2}$

如果这回答了你的问题,请告诉我。在

相关问题 更多 >