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']
参考资料:“但我需要这些……的值?”?看起来你在这句话里忘了什么。