我在Django有模特。
其中一个模型的示例可以具有来自同一个表或项目中任何其他表的“父项”,也可以根本没有父项。
如果我将父类作为参数传递给模型类,那么我可以在保存()函数中“处理”父类并在save()中设置外键值吗?
为了澄清,我的问题主要是我不知道父节点的“模型类型”是什么,所以我需要模型在设置ForeignKey值之前确定这一点。
伪代码来解释自己:
model_instance_being_created = ModelType(
parent = parentinstance
other_attributes
)
model_instance_being_created.save()
在models.py:
class ModelType(models.Model):
#bunch of attributes
parent = models.ForeignKey('self', null=True, blank=True, on_delete=models.CASCADE)
def save(self, *args, **kwargs):
parent_type = self.parent.__class__
self.parent = parent.objects.get(id=self.parent.id)
super().save(*args, **kwargs)
1条答案
按热度按时间lymgl2op1#
你不能有一个动态的外键,因为数据库中的名字被绑定到它是一个键的外表-见文档。
相反,您可以在每个模型类型示例和中间表之间建立一对一的关系,然后将外键作为
parent
。这看起来确实很笨拙,而且几乎可以肯定有更好的方法基于你的具体情况。