2017-06-07 137 views
0

我有2个数据表在我的应用程序,onClick任何project-content-datatable行将显示其第二个表(内容表)上的子内容,现在在我的第二个表我有一个按钮来弹出一个表单模式来创建新的内容,在这种形式下,我可以根据用户点击哪一行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> 

model.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) 

form.py

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

view.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) 

回答

0

创建工作单的处理形成独立的观点,放置在弹出的工作订单的按钮具有“href”,这将导致你到处理工作单的提交一些看法像:

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

你的urls.py会是这样:`

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

我在这里胡思乱想,更换需要更换

什么
+0

嗨@Mani,感谢您的回复,您能否给我一个完整的视图示例,因为我现在正在尝试,而且它不工作。 –

+0

你是否在视图中检索到pk?您可以从kwargs中检索它,如:pk = self.kwargs.get('pk'),然后ProjectContent.objects.get(pk = pk)。我假设你想让这个PK分配给新的工作单,对吗? – Mani

+0

是的,现在的问题,我不知道如何得到PK,我很抱歉,我很新的编程 –