根据单击的datatable行将默认值设置为ForeignKey字段

2024-09-25 10:33:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我的应用程序中有2个数据表,只要点击project-content-datatable行中的任何一个,就会在第二个表(content table)上显示它的子内容,现在在我的第二个表中,我有一个按钮,可以在modal中弹出一个窗体,在其中创建新的内容,在这个窗体中,我可以根据用户点击的行project-content-datatable来设置parent_project_content = models.ForeignKey(ProjectContent, on_delete=models.CASCADE)的默认值。你知道吗

非常感谢您的帮助,谢谢

这是我的密码 HTML格式

<table id="project-content-datatable" class="display table table-hover table-responsive" style="width: 100%">
    <thead>
    <tr>
        <th class="small text-muted text-uppercase"><strong>Name</strong></th>
        <th class="small text-muted text-uppercase"><strong>Description</strong></th>
    </tr>
    </thead>
    <tbody>
    {% for content in content_list %}
        {% if content.search_type.name == searchtype.name %}
            <tr class="text-primary">
                <td class="text-left" style="cursor: pointer"
                    onclick='load_workorder({{ content.id }});'>
                    {{ content.id }}
                </td>
                <td class="text-left" style="cursor: pointer" onclick='load_workorder({{ content.id }});'>
                    {{ content.name }} </td>
            </tr>
        {% endif %}
    {% endfor content_list %}
    </tbody>
</table>
<!-- END Hover Table -->


<!-- WORKORDER START-->
    <h3 class="panel-title text-white">WorkOrders</h3>
 <div class="btn-group" role="group" aria-label="...">
    <button
        data-toggle="modal" data-target="#create_new_workorder"
        type="button" class="btn btn-sm btn-success btn-outline"><span
        class="hidden-md hidden-sm hidden-xs">Create Workorder</span> <i
        class="fa fa-fw fa-plus"></i>
    </button>
</div>
<!--Create Workorder Form Modal -->
<div class="modal fade" id="create_new_workorder" tabindex="-1" role="dialog"
     aria-labelledby="TitleLabel">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&#xD7;</span></button>
                <h4 class="modal-title">Create New Workorder</h4>
            </div>
            <form method="POST" enctype="multipart/form-data">{% csrf_token %}
                <div class="modal-body">
                    {{ workorder_form.as_p }}
                </div>
                <div class="modal-footer">
                    <input class="btn btn-primary" type="submit"
                           value="Create Workorder"/>
                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel
                    </button>
                </div>
            </form>
        </div>
    </div>
</div>

你知道吗型号.py你知道吗

class WorkOrder(models.Model):
     parent_project_content = models.ForeignKey(ProjectContent, on_delete=models.CASCADE)
    description = models.TextField(default='workorder of project content', blank=True)
    assign_to = models.ForeignKey(Employee, on_delete=models.CASCADE, related_name='assign_to', null=True, blank=True)

你知道吗表格.py你知道吗

class CreateWorkorderForm(forms.ModelForm):
    class Meta:
        model = WorkOrder
        fields = ['parent_project_content','description', 'assign_to',]

你知道吗视图.py你知道吗

def content_view(request, project_id):
    """
    :param request: 
    :param project_id: 
    :return: 
    """
    selected_project = get_object_or_404(Project, id=project_id)
    search_type_list = selected_project.search_type.all()
    project = get_object_or_404(Project, id=project_id)
    form = CreateProjectContentForm(request.POST or None, request.FILES or None)
    workorder_form = CreateWorkorderForm(request.POST or None, request.FILES or None)

    if workorder_form.is_valid():
        instance = workorder_form.save(commit=False)
        instance.parent_project_content = WorkOrder.objects.get(parent_project_content=24)
        instance.save()

    if form.is_valid():
        inst = form.save(commit=False)
        inst.project = project
        inst.save()

    context = {
        'form': form,
        'workorder_form': workorder_form,
        "search_type_list": search_type_list,
        "selected_project": selected_project,
        "content_list": ProjectContent.objects.all().filter(project=selected_project.id),
        "content_id": WorkOrder.objects.all,
    }
    return render(request, 'dashboard/projects/content.html', context)

Tags: textdivformprojectidmodelsrequesttype
1条回答
网友
1楼 · 发布于 2024-09-25 10:33:17

为处理工单表单创建一个单独的视图,在弹出工单表单的按钮上放置一个“href”,这将引导您进入处理工单提交的视图,例如:

href="{% url 'workorder_handle' pk=content.pk %}"

你的网址.py会是这样的:`

url(r'/workorder_form/(?P<pk>\d+)/$', workorder_view, name='workorder_handle'),

我在想象这里的东西,替换需要替换的东西

相关问题 更多 >