【发布时间】:2020-06-25 01:11:30
【问题描述】:
我在设计数据库时遇到了很多困难,但我将问题归结为核心问题。
学生可以注册套餐。包是许多模块的组。
当学生注册包时,我需要为包中的每个模块自动生成一个 Extra_Data 表,链接到学生。这将保存一个模块和一个学生独有的数据。
class Student(models.Model):
package = models.ManyToManyField(Package, blank=True)
class Module(models.Model):
task_type = models.CharField(max_length=200)
topic = models.CharField(max_length=200)
class Package(models.Model):
individual_modules = models.ManyToManyField(Module, blank=True)
name = models.CharField(max_length=200)
我如何显示包:
{% for package in user.student.module_packages.all %}
<table>
<th>Module</th>
<th>Task Type</th>
<th>Topic</th>
#<th>Complete</th> not yet implemented
#<th>User Files</th> not yet implemented
#<th>Teachers Files</th> not yet implemented
<h3 class="account-heading">{{ package.name }}</h2>
{% for module in package.individual_modules.all %}
<tr>
<td>{{ module.id }}</td>
<td>{{ module.task_type }}</td>
<td>{{ module.topic }}</td>
#<td>{{ module.extra_data.module_complete }}</td> this is an example of
# how I would expect to be able to handle the extra_data tables contents,
# though its turning out to be a real challenge
</tr>
{% endfor %}
{% endfor %}
我尝试了很多事情,包括在 Student 和 Module 之间使用 Django through 关系,“通过”Extra_Data。这不起作用,因为它直接将学生与模块联系起来 - 当学生在 Django Admin 中获得一个包时,不会为包中的模块创建 Extra_Data 表。
-- 我认为这与我的主要问题无关,但学生也可以注册单独的模块--
非常感谢。
【问题讨论】:
-
请use text, not images/links, for text--including tables & ERDs。只提供您需要的东西并将其与您的问题联系起来。仅将图像用于无法表达为文本或增强文本的内容。无法搜索或剪切和粘贴图像。在图像中包含图例/键和说明。使用编辑功能插入图片/链接。
-
这很难理解 - 但让我试一试:当学生注册 ModulePackage 时,您试图为每个模块自动添加 ExtraModuleData?然后你想包括他们可以访问的文件上传?
-
你好 :)。这实际上阻碍了我实施你帮助我的最后一件事 - ajax 复选框。是的,你说的是对的。每个学生的每个模块都需要一个 ExtraDataModule,包括单个模块和包中包含的每个模块。我最初包含一个指向我的 RDNM 的链接,但删除了它。再次感谢。
-
ExtraDataModule 将包含特定于该学生/模块的数据。一旦我开始工作,我应该能够创建另一个与 ExtraDataModule 表具有一对多关系的表,这个新表将保存学生为该特定模块上传的文件。
标签: django database-design relational-database database-schema