微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Django 中生成动态链接:公司和员工

如何解决在 Django 中生成动态链接:公司和员工

我正在 Django 中创建一个员工管理系统项目。

我制作了公司主页,我们可以在其中选择添加新公司、删除以前的公司或删除它。

现在我想要当我点击该公司名称时,它会为该特定公司名称生成一个动态链接(具有添加删除和编辑员工的相同功能

目前,我被卡住了。无法为每个提供员工详细信息的公司生成动态链接

这是我的 Models.py 文件

from datetime import date,datetime
from django.db import models
from django.db.models.fields.related import ForeignKey
from django.utils import timezone
# Create your models here.

class companyModel(models.Model):
    company_name = models.CharField(max_length=100,blank=False)
    company_created = models.DateField(default=datetime.Now,blank=False)

class employeeModel(models.Model):
    employee_company_name = models.ForeignKey(companyModel,on_delete=models.CASCADE)
    employee_name = models.CharField(max_length=100,blank=False)
    employee_created = models.DateField(default=datetime.Now,blank=False)

Forms.py 文件

from django import forms
from django.forms import widgets
from empman.models import companyModel,employeeModel

class companyForm(forms.ModelForm):
    class Meta:
        model = companyModel
        fields = ['company_name','company_created']
        widgets = {
            'company_name' : forms.TextInput(attrs={'class':'form-control '}),'company_created':forms.TextInput(attrs={'class':'form-control'})
        }

class employeeForm(forms.ModelForm):    
    class Meta:
        model = employeeModel
        fields = ['employee_company_name','employee_name','employee_created']

Views.py 文件

from django import forms
from django.shortcuts import render,HttpResponsePermanentRedirect
from empman.forms import companyForm,employeeForm
from empman.models import companyModel,employeeModel
# Create your views here.
def companyShowView(request):
    if request.method == 'POST':
        form = companyForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponsePermanentRedirect('/')
    else:
        form = companyForm()
    
    comp = companyModel.objects.all()
    return render(request,'empman/companyshow.html',{'form':form,'comp':comp})

def editCompany(request,id):
    if request.method == 'POST':
        uniqueid = companyModel.objects.get(pk=id)
        requestpost = companyForm(request.POST,instance=uniqueid)
        if requestpost.is_valid():
            requestpost.save()
            return HttpResponsePermanentRedirect('/')
    else:
        uniqueid = companyModel.objects.get(pk=id)
        requestpost = companyForm(instance=uniqueid)
    return render(request,'empman/companyupdate.html',{'form':requestpost})

def deleteCompany(request,id):
    if request.method == 'POST':
        dele=companyModel.objects.get(pk=id)
        dele.delete()
        return HttpResponsePermanentRedirect('/')


# def viewEmployee(request,id):
#     print(id)
#     return render(request,'empman/employeeshow.html')

def viewEmployee(request,id):
    showemps = employeeModel.objects.all()
    return render(request,'empman/employeeshow.html')

def employeeShowView(request):
    if request.method == 'POST':
        empform = employeeForm(request.POST)
        if empform.is_valid():
            empform.save()
            
    else:
        form = employeeForm()
    
    emp = employeeModel.objects.all()
    return render(request,'empman/employeeshow.html',{'empform':empform,'emp':emp})

urls.py 文件

# from mysite.empman.views import editCompany
from django.contrib import admin
from django.urls import path
from empman import views

urlpatterns = [
    path('admin/',admin.site.urls),path('',views.companyShowView,name='index'),path('delete/<int:id>',views.deleteCompany,name='deletecomp'),path('<int:id>/edit',views.editCompany,name='editcomp'),path('<int:id>/employee/',views.viewEmployee,name='showemp')
]

companyShow.html

{% extends 'empman/base.html' %}

{% block content %}
<p></p>
<center>
<div class="col-sm-3">
    <h4 class="alert alert-info">Add new Company</h4>
    <form class="form-control" method="POST">
    {% csrf_token %}
    {{ form }}
    <p></p>
    <input type="submit" class="btn btn-warning" value="ADD" id="add">
</form>
</div>
<div class="col-sm-10">
    <p></p>
    <h4 class="alert alert-info">Here is the list of companies</h4>
    <table class="table table-hover">
        <th class="thead-dark">
        <tr>
            <th scope="col">Sr</th>
            <th scope="col">Company Name</th>
            <th scope="col">Creation Date</th>
            <th scope="col">Operations</th>
        </tr> 
        </th> 
        <tbody>
          {% for comps in comp %}  
          <tr>
            <th scope="col">{{comps.id}}</th>
            <th scope="col"><a href="{% url 'showemp' comps.id %}">{{comps.company_name}}</a></th>
            <th scope="col">{{comps.company_created}}</th>
            <td>
                <!-- <a href="{% url 'showemp' comps.id %}" class="btn btn-success btn-sm">View</a> -->
                <a href="{% url 'editcomp' comps.id %}" class="btn btn-warning btn-sm">Edit</a>
                <form action="{% url 'deletecomp' comps.id %}" method="POST" class="d-inline">
                    {% csrf_token %}
                    <input type="submit" value="Delete" class="btn btn-danger">
                </form>
            </td>
          </tr>
        </tbody>
        {% endfor %}
</div>
</center>
{% endblock content %}

employeeShow.html

{% extends 'empman/base.html' %}

{% block content %}
<p></p>
<center>
<div class="col-sm-3">
    <h4 class="alert alert-info">Add new Employee</h4>
    <form class="form-control" method="POST">
    {% csrf_token %}
    {{empform}}
    <p></p>
    <input type="submit" class="btn btn-warning" value="ADD" id="add">
</form>
</div>
<div class="col-sm-10">
    <p></p>
    <h4 class="alert alert-info">Employees for {{eachshowemps.employee_company_name.company_name}}</h4>
    <table class="table table-hover">
        <th class="thead-dark">
        <tr>
            <th scope="col">ID</th>
            <th scope="col">Employee Name</th>
            <th scope="col">Joining Date</th>
            <th scope="col">Operations</th>
        </tr> 
        </th> 
        <tbody>
          {% for eachshowemps in showemps %}  
          <tr>
            <th scope="col">{{eachshowemps.id}}</th>
            <th scope="col">{{eachshowemps.employee_name}}</th>
            <th scope="col">{{eachshowemps.employee_created}}</th>
            <td>
                <a href="" class="btn btn-success btn-sm">Edit</a>
                <a href="" class="btn btn-warning btn-sm">Delete</a>
            </td>
          </tr>
        </tbody>
        {% endfor %}
</div>
</center>
{% endblock content %}

目前,我公司的编辑和删除工作正常

enter image description here

解决方法

您的 viewEmployee 函数应该返回 CompanyModel 实例而不是 employeeModel 的所有查询集

def viewEmployee(request,id):
    company = companyModel.objects.get(id=id)
    employess = company.employeemodel_set.all() #employess of that company
    return render(request,'empman/employeeshow.html',{'company':company,'showemps':employees})

还要考虑为您的视图使用有意义的名称。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?