以下内容适用于创意写作应用。所有方面(角色,场景,项目等)都记录在同一模型中,以提供简单的侧边栏目录。每个扩展模型都有添加特定字段的扩展模型,因此,在侧栏中选择元素时,扩展模型将作为右侧的表单加载。 为清晰起见,排除了扩展模型附加字段和Universe模型。
问题是,我真的很想限制特定的ManytoMany字段上的选择。
MODELS.PY
class user_information
user = models.ForeignKey(User, on_delete=models.CASCADE)
current_universe = models.PositiveSmallIntegerField(blank=True, null=True)
class element_type
name <e.g. ID 1 = universe, ID 2 = project, ID 3 = scene, ID 4 = draft, ID 5 = characters>
class element
name = models.CharField(max_length=100)
elements_type = models.ForeignKey(element_type, on_delete=models.CASCADE)
universe = models.PositiveSmallIntegerField() <default value will be set automatically to match current_universe>
parent_ID models.ForeignKey('self', on_delete=models.CASCADE) <if the element is a scene, this will identify its draft; likewise with a draft and its project>
class extension_project
name = models.CharField(max_length=100)
element_id = models.ForeignKey(element, on_delete=models.CASCADE)
characters = models.ManyToManyField(element, limit_choices_to={'elements_type': 1, 'universe': ? User_information’s current_universe – record 1}) <don't know how to do this at the moment but that's not part of the question>
class extension_draft
name = models.CharField(max_length=100)
element_id = models.ForeignKey(element, on_delete=models.CASCADE)
class extension_scenes
name = models.CharField(max_length=100)
characters = models.ManyToManyField(element, limit_choices_to={'element_type': 1, < ? elements with the same project as this scene’s 1) element’s 2) parent ID’s 3) parent ID > })
我需要在这个extensions_scenes模型中使用字符选择列表,以便仅向我显示与现有项目相关联的字符(通过extension_project模型与characters列建立的连接)。 它怎么知道哪个项目?通过将当前选定的extension_scene记录的项目与extension_project模型的element_id列进行匹配。可以在元素模型中找到extensions_scene属于哪个项目。
因此应用程序必须-首先确定该extension_scene记录的项目:
然后将此字符列表限制为:
谢谢您的帮助
以下内容适用于创意写作应用。所有方面(角色,场景,项目等)都记录在同一模型中,以提供简单的侧边栏目录。每个都有要添加的扩展模型...
所以应用程序必须-首先确定该extension_scene记录的项目: