python - 如何在 django 中引用 ForeignKey 来填充谱系表?
问题描述
我有两个通过 ForeignKey 和 OneToOneField 相互链接的模型,如下所示:
楷模
class Porumbei(models.Model):
serie_inel = models.CharField(max_length=25, null=False, blank=False, unique=True,
help_text="Seria de pe inel. Ex: RO 123456")
...
...
tata = models.ForeignKey('Perechi', to_field='mascul', on_delete=models.CASCADE,
related_name="porumbei_masculi", null=True, blank=True)
mama = models.ForeignKey('Perechi', to_field='femela', on_delete=models.CASCADE,
related_name="porumbei_femele", null=True, blank=True)
class Perechi(models.Model):
...
mascul = models.OneToOneField(Porumbei, null=True, on_delete=models.CASCADE,
limit_choices_to=Q(sex="Mascul"), related_name="perechi_masculi")
femela = models.OneToOneField(Porumbei, null=True, on_delete=models.CASCADE,
limit_choices_to=Q(sex="Femelă"), related_name="perechi_femele")
...
在模板中,我需要用鸽子的祖先填充一个表。要从数据库中检索鸽子,我使用:
意见
def editareporumbei(request, pk):
porumbel = get_object_or_404(Porumbei, pk=pk)
然后,在祖先表中,在父亲字段我使用
{{ porumbel.tata.mascul }}
我的问题是我怎样才能得到 porumbel 的祖父,祖父?我怎么能在模板中得到它?提前致谢!
解决方案
您应该可以通过以下方式访问它们
# For grand-father
porumbel.tata.mascul.tata.mascul
# For grand-grand-father
porumbel.tata.mascul.tata.mascul.tata.mascul
# and so on...
推荐阅读
- python - 如何在 PYQT5 加载时显示 gif?
- esper - EPL 每个限制子表达式的生命周期
- algorithm - 求解给定变量的二叉表达式树
- python - Jupyter Notebook 导入错误:无法从“pandas.compat.numpy”导入名称“np_version_under1p17”
- node.js - npm 错误!没有适用于电报键盘的版本
- cpu - L1-Dcache是终极数据缓存,DSB也是gem5可以模拟的缓存吗?
- laravel - 在 Vue 3 的 vue 文件中导入脚本时出错
- css - 在 Tailwind/React 中具有交错转换的子项继承的菜单打开/关闭状态
- security - 扫描 .jar 文件以查看它的作用
- python-3.x - 使用不同的协议启动多个服务器(asyncio Stream)