我想创建一个JSON对象
-
通过特定的emp_id从“ EmpProject”模型中搜索特定的项目
-
借助(1.)搜索结果,从模型“项目”中搜索项目状态为“待处理”。
我正在使用JSON解析器(无模型或通用视图)
模型
下面是我的模型,我没有使用多对多字段,而是创建了一个中间表,如果通过使用manytomanyfield而不是建议也可以解决问题的话
class Employee(models.Model):
employeeid = models.IntegerField()
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
phone_no = models.CharField(max_length=10)
date_of_birth = models.DateField()
email = models.EmailField(unique=True)
password = models.CharField(max_length=50)
designation = models.CharField(max_length=50)
dept_id = models.ForeignKey(Department,on_delete=models.SET_NULL,null=True,blank=True)
class Meta:
ordering = ('id',)
def __str__(self):
return self.emp_name
class Project(models.Model):
projectname = models.CharField(max_length=50,unique=True,)
project_status = models.CharField(max_length=50)
description = models.TextField()
start_date = models.DateField(auto_now_add=True)
due_date = models.DateField()
class Meta:
ordering = ('id',)
def __str__(self):
return self.projectname
class EmpProject(models.Model):
emp_id = models.ForeignKey(Employee,blank=True)
project_id = models.ForeignKey(Project,blank=True)
class Meta:
unique_together = [['emp_id','project_id']]
ordering = ('project_id',)
def __str__(self):
return self.emp_id
序列化器
class EmployeeSerializer(serializers.ModelSerializer):
dept_id = serializers.SlugRelatedField(queryset=Department.objects.all(),slug_field='dept_name')
class Meta:
model = Employee
fields = [
'id','employeeid','first_name','last_name','phone_no','date_of_birth','email','password','designation','dept_id',]
class ProjectSerializer(serializers.ModelSerializer):
class Meta:
model = Project
fields = [
'id','projectname','project_status','description','start_date','due_date',]
class EmpProjectSerializer(serializers.ModelSerializer):
emp_id=serializers.SlugRelatedField(queryset=Employee.objects.all(),slug_field='employeeid')
project_id=serializers.SlugRelatedField(queryset=Project.objects.all(),slug_field='projectname')
class Meta:
model = EmpProject
fields = [
'emp_id','project_id',]