django - 具有相同父子模型的django内联表单集
问题描述
我有一个 Person 模型,它的parent
字段是自身的外键,所以这个模型的任何实例都可以有一个父模型,它是同一模型的另一个实例。
我想要实现的是使用 django 提供的内联表单集添加/更新 Person 的子级。但是我遇到的问题是 inlineformset 需要不同的父模型和子模型。
模型.py
from django.db import models
# Create your models here.
class FamilyMember(models.Model):
name = models.CharField(max_length=20)
age = models.PositiveIntegerField(null=True, blank=True)
job = models.CharField(max_length=20, null=True, blank=True)
parent = models.ForeignKey('self',
blank=True,
null=True,
related_name='children',
on_delete=models.CASCADE)
视图.py
def add_child(request):
member = FamilyMember.objects.get(name="Tom")
child_formset_factory = inlineformset_factory(FamilyMember, FamilyMember, fields=('parent',))
formset = child_formset_factory(instance=member)
return render(request, "family/add_child.html", {"formset": formset})
模板.py
{% block content %}
<form method="post">
{{ formset.management_form }}
{% for form in formset %}
{{ form }}
{% endfor %}
<input type="button" value="Submit">
</form>
{% endblock %}
检查 html 后,我看到字段被呈现为hidden
,我不知道为什么。
当我呈现此表单集时,即使数据库中有有效记录,我也没有看到为任何现有人员列出的任何子项。
相反,我想看到的是这个,假设一个人 X 有 3 个孩子 A、B、C,那么我想要 3 个下拉列表,第一个下拉列表应该选择 A 作为选择值,第二个应该选择 B 作为选择和很快。
我不确定我的做法是否正确,或者 inlineformsets 是否适用于这种特殊情况。
解决方案
推荐阅读
- python - Pyspark:仅从嵌套的 json 数据中读取某些字段
- oracle - 我们可以在合并语句中使用别名吗
- python - /update_order/ 重复键值处的 IntegrityError 违反了唯一约束“app_order_pkey”。详细信息:键 (id)=(54) 已存在
- c# - 在 EPPlus 4.5.3 中阅读形状和文本框
- python-3.x - python - 如何在python中验证给定的CHANNEL ID对于Telegram API是对还是错
- flutter - Flutter 网页风味
- python - 如何获取熊猫中重复行的列表?
- vba - 如何修改标题文本并保持自动编号 - VBA,word
- python - Django request.POST 返回一个空字典
- javascript - 节点 ejs 在单击时执行脚本