这些天我正在研究django,我需要你的帮助才能找到解决这个问题的方法。
假设我有一个名为“活动”的实体,它由以下组成:
- title: just a char field
- ActivityYears: a couple of start-end years that can be repeated multiple times
ActivityYears由:
组成- start year
- end year
这就是我的数据库应该是这样的:
activity_table
-ID
-title
activity_years_table
-year start
-year end
-activity ID
这就是前端的看法
Activity title 1
2001 - 2003
2005 - 2006
2007 - 2010
Activity title 2
2011 - 2013
2015 - 2016
and so on
我敢说Activity和ActivityYears是模型,但我无法以正确的方式连接它们。当我添加一个活动项目时,我应该能够添加尽可能多的开始年份,但是如何?
提前完成
答案 0 :(得分:3)
您可能希望使用两个具有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
,该成员指向数据库中有效id
行的Activity
字段。有了这些信息,您就可以使用相应的ActivityYear
对象的Activity
成员从数据库中选择id
个对象:
SELECT * FROM activity_years WHERE activity_id = 1
或在Django中:
activity_years = Activity.objects.filter(activity_id=1)
为了添加映射到特定ActivityYear
对象的Activity
个对象,您可以使用以下内容:
ActivityYear.objects.create({
'year_start': 1990,
'year_end': 1999,
'activity_id': 1,
})
如果这回答了你的问题,请告诉我。