Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django DRF需要值而不是ID_Django_Django Models_Django Rest Framework - Fatal编程技术网

Django DRF需要值而不是ID

Django DRF需要值而不是ID,django,django-models,django-rest-framework,Django,Django Models,Django Rest Framework,这是我的序列化程序类 class ProjectSerializer(ModelSerializer): class Meta: model = Project exclude = ['deleted_at'] 这是Models.py class MandatoryFields(SoftDeletionModel): created_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delet

这是我的序列化程序类

class ProjectSerializer(ModelSerializer):
    class Meta:
        model = Project
        exclude = ['deleted_at']
这是Models.py

class MandatoryFields(SoftDeletionModel):
    created_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="%(app_label)s_%(class)s_created",null=True)
    updated_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="%(app_label)s_%(class)s_updated",null=True)
    created_date = models.DateTimeField(auto_now_add=True,null=True)
    modified_date = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True


class Project(MandatoryFields, Model):  
    project_name = models.CharField(max_length=255, blank=True)
    project_areas = models.CharField(max_length=255, blank=True)
    project_manager = models.ForeignKey(
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True,
        related_name="%(app_label)s_%(class)s_project_manager")       
    start_date = models.DateField(null=True, blank=True)
    end_date = models.DateField(null=True, blank=True)

    REQUIRED_FIELDS = []

    def __str__(self):
        return self.project_name
我正在获取由项目经理创建、更新的外键的Id。但我需要的是值而不是Id

例如,我得到了

创建人:1

但我需要 创建人:Alex

我试过以下方法

class ProjectSerializer(ModelSerializer):
    created_by = SlugRelatedField(read_only=True, slug_field='created_by')
    class Meta:
        model = Project
        exclude = ['deleted_at']

但我得到的是空值。

我认为可以通过为序列化器字段指定源属性来实现

像这样的事情:

class ProjectSerializer(ModelSerializer):
    created_by = CharField(source="created_by.first_name")

    class Meta:
        model = Project
        exclude = ['deleted_at']
参考资料:

“但我需要这些……的值?”?看起来你在这句话里忘了什么。