Python Django REST:&x27;请求';对象没有属性';字段名称';
我正在尝试创建一个职位申请,以便将一份工作申请添加到申请者列表中。这是由Python Django REST:&x27;请求';对象没有属性';字段名称';,python,django,django-rest-framework,Python,Django,Django Rest Framework,我正在尝试创建一个职位申请,以便将一份工作申请添加到申请者列表中。这是由POST/task worker/ 但是,我得到了一个错误: “请求”对象没有“任务”属性 型号.py class Task_worker(models.Model): worker = models.ForeignKey(Worker) task = models.ForeignKey(Task) class Meta: unique_together = ('worker', '
POST/task worker/
但是,我得到了一个错误:
“请求”对象没有“任务”属性
型号.py
class Task_worker(models.Model):
worker = models.ForeignKey(Worker)
task = models.ForeignKey(Task)
class Meta:
unique_together = ('worker', 'task')
class Task(models.Model):
...
class Worker(models.Model):
...
class TaskWorkerSerializer(serializers.ModelSerializer):
task = serializers.ReadOnlyField(source='task.id')
worker = serializers.ReadOnlyField(source='worker.id')
class Meta:
model = Task_worker
fields = ('id', 'task', 'worker', 'created', )
def create(self, validated_data):
validated_data['task_id'] = self.context['request'].task
return super(TaskWorkerSerializer, self).create(validated_data)
class TaskWorker(generics.ListCreateAPIView):
serializer_class = TaskWorkerSerializer
def get_queryset(self):
task_id = self.kwargs.get('task_id', '')
queryset = Task_worker.objects.filter(task__user=self.request.user, task_id=task_id).distinct()
return queryset
def perform_create(self, serializer):
worker = Worker.objects.get(user=self.request.user)
task = Task.objects.get(pk=self.kwargs.get('task_id', ''))
serializer.save(task=task, worker=worker)
#ALSO TRIED
#serializer.save(task_id=self.kwargs.get('task_id', ''), worker=worker)
url(r'^task-worker/(?P<task_id>[0-9]+)/$', views.TaskWorker.as_view()),
序列化程序.py
class Task_worker(models.Model):
worker = models.ForeignKey(Worker)
task = models.ForeignKey(Task)
class Meta:
unique_together = ('worker', 'task')
class Task(models.Model):
...
class Worker(models.Model):
...
class TaskWorkerSerializer(serializers.ModelSerializer):
task = serializers.ReadOnlyField(source='task.id')
worker = serializers.ReadOnlyField(source='worker.id')
class Meta:
model = Task_worker
fields = ('id', 'task', 'worker', 'created', )
def create(self, validated_data):
validated_data['task_id'] = self.context['request'].task
return super(TaskWorkerSerializer, self).create(validated_data)
class TaskWorker(generics.ListCreateAPIView):
serializer_class = TaskWorkerSerializer
def get_queryset(self):
task_id = self.kwargs.get('task_id', '')
queryset = Task_worker.objects.filter(task__user=self.request.user, task_id=task_id).distinct()
return queryset
def perform_create(self, serializer):
worker = Worker.objects.get(user=self.request.user)
task = Task.objects.get(pk=self.kwargs.get('task_id', ''))
serializer.save(task=task, worker=worker)
#ALSO TRIED
#serializer.save(task_id=self.kwargs.get('task_id', ''), worker=worker)
url(r'^task-worker/(?P<task_id>[0-9]+)/$', views.TaskWorker.as_view()),
视图.py
class Task_worker(models.Model):
worker = models.ForeignKey(Worker)
task = models.ForeignKey(Task)
class Meta:
unique_together = ('worker', 'task')
class Task(models.Model):
...
class Worker(models.Model):
...
class TaskWorkerSerializer(serializers.ModelSerializer):
task = serializers.ReadOnlyField(source='task.id')
worker = serializers.ReadOnlyField(source='worker.id')
class Meta:
model = Task_worker
fields = ('id', 'task', 'worker', 'created', )
def create(self, validated_data):
validated_data['task_id'] = self.context['request'].task
return super(TaskWorkerSerializer, self).create(validated_data)
class TaskWorker(generics.ListCreateAPIView):
serializer_class = TaskWorkerSerializer
def get_queryset(self):
task_id = self.kwargs.get('task_id', '')
queryset = Task_worker.objects.filter(task__user=self.request.user, task_id=task_id).distinct()
return queryset
def perform_create(self, serializer):
worker = Worker.objects.get(user=self.request.user)
task = Task.objects.get(pk=self.kwargs.get('task_id', ''))
serializer.save(task=task, worker=worker)
#ALSO TRIED
#serializer.save(task_id=self.kwargs.get('task_id', ''), worker=worker)
url(r'^task-worker/(?P<task_id>[0-9]+)/$', views.TaskWorker.as_view()),
即使在perform\u create()
中没有明确的task
,我仍然会得到相同的错误,即请求没有任务属性
url.py
class Task_worker(models.Model):
worker = models.ForeignKey(Worker)
task = models.ForeignKey(Task)
class Meta:
unique_together = ('worker', 'task')
class Task(models.Model):
...
class Worker(models.Model):
...
class TaskWorkerSerializer(serializers.ModelSerializer):
task = serializers.ReadOnlyField(source='task.id')
worker = serializers.ReadOnlyField(source='worker.id')
class Meta:
model = Task_worker
fields = ('id', 'task', 'worker', 'created', )
def create(self, validated_data):
validated_data['task_id'] = self.context['request'].task
return super(TaskWorkerSerializer, self).create(validated_data)
class TaskWorker(generics.ListCreateAPIView):
serializer_class = TaskWorkerSerializer
def get_queryset(self):
task_id = self.kwargs.get('task_id', '')
queryset = Task_worker.objects.filter(task__user=self.request.user, task_id=task_id).distinct()
return queryset
def perform_create(self, serializer):
worker = Worker.objects.get(user=self.request.user)
task = Task.objects.get(pk=self.kwargs.get('task_id', ''))
serializer.save(task=task, worker=worker)
#ALSO TRIED
#serializer.save(task_id=self.kwargs.get('task_id', ''), worker=worker)
url(r'^task-worker/(?P<task_id>[0-9]+)/$', views.TaskWorker.as_view()),
在序列化程序的创建方法中,不需要这一行
validated_data['task\u id']=self.context['request'].task
。任务将自动添加
此外,如果您有此功能,则不需要validated_data['worker']=self.context['request'].worker
从文档中:
调用.create()或.update()时,任何其他关键字参数都将包含在已验证的_数据参数中
您想向Task_worker模型添加条目吗?@VikasDamodar是的,但是因为它是一个多对多(Task_worker)的槽表,所以我需要指定Task_idIt,如果发生错误,它不清楚。请发布完整的回溯。@DanielRoseman AddedI认为serializers.py中存在问题,您是否也可以添加该问题?