我正在使用Rest Framework。它没有在我的模型中显示job_users
,这是ManyToManyField
。甚至我想在用户发送数据时手动设置job_created_by
。并为job_created_on
设置当前日期时间
当我删除job_users = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
它给出错误 -
/ api / jobs / add / str中的TypeError返回非字符串(类型NoneType)
class JobsAddAPIView(generics.CreateAPIView):
queryset = Jobs.objects.all()
serializer_class = JobAddSerialzer
permission_classes = [IsAuthenticated]
class JobAddSerialzer(serializers.ModelSerializer):
job_users = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = Jobs
fields = [
'job_name',
'job_number',
'job_description',
'job_start_date',
'job_start_time',
'job_end_date',
'job_end_time',
'job_group',
'job_users',
'job_status',
]
class Jobs(models.Model):
job_company = models.ForeignKey(Company, on_delete=models.CASCADE)
job_group = models.ForeignKey(Groups, on_delete=models.CASCADE)
job_users = models.ManyToManyField(User,related_name='job_users', blank=True)
job_name = models.CharField(max_length=30)
job_number = models.CharField(max_length=30)
job_description = models.CharField(max_length=100, blank=True, null=True)
job_start_date = models.DateField(blank=True, null=True)
job_start_time = models.TimeField(blank=True, null=True)
job_end_date = models.DateField(blank=True, null=True)
job_end_time = models.TimeField(blank=True, null=True)
job_created_on = models.DateTimeField(auto_now_add=True)
job_created_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name='job_created_bys')
job_updated_on = models.DateTimeField(auto_now=True)
job_updated_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name='job_updated_bys')
job_is_deleted = models.BooleanField(default=False)
job_deleted_at = models.DateTimeField(blank=True, null=True)
你可以定义一个serializer_field
到另一个serailizer
。哪个将填充manytomany
字段。
class UserSerialzer(serializers.ModelSerializer):
# your user serializer
class JobAddSerialzer(serializers.ModelSerializer):
job_users = UserSerializer(many=True, read_only=True)
class Meta:
model = Jobs
fields = [
'job_name',
'job_number',
'job_description',
'job_start_date',
'job_start_time',
'job_end_date',
'job_end_time',
'job_group',
'job_users',
'job_status',
]