我在模板中获取选择字段的ID。但是我想显示选择字段的名称。请查看以下文件,并让我知道如何获取名称。

这是我的models.py

================================================== =============

class Posted(models.Model):
    name = models.CharField(_('Posted In'),max_length=255, unique=True)

class Tags(models.Model):
    name = models.CharField(_('Tag Name'),max_length=255, unique=True)

class Blogs(models.Model):
    author = models.ForeignKey(CustomUser)
    title=models.CharField(max_length=100)
    posted=models.ForeignKey(Posted, blank=True)
    tags= models.ManyToManyField(Tags, blank=True)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)


serializers.py



class BlogsSerializer(serializers.ModelSerializer):
    author = AccountSerializer(read_only=True,required=False)
    class Meta:
        model = Blogs
        fields = ('id','author','title','tags','posted','content','created_at','updated_at')
        read_only_fields=('id','created_at','updated_at')

class TagsSerializer(serializers.ModelSerializer):
    name = serializers.SerializerMethodField()
    class Meta:
        model = Tags
        fields = ('id','name')
        read_only_fields=('id','name')
class PostedSerializer(serializers.ModelSerializer):
    name = serializers.SerializerMethodField()
    class Meta:
        model = Posted
        fields = ('id','name')
        read_only_fields=('id','name')


views.py



class BlogViewSet(viewsets.ModelViewSet):
    queryset=Blogs.objects.order_by('-created_at')
    serializer_class= BlogsSerializer

    def get_permissions(self):
        if self.request.method in permissions.SAFE_METHODS:
            return (permissions.AllowAny(),)
        return (permissions.IsAuthenticated(),IsAuthorOfBlog(),)

    def perform_create(self,serializer):
        serializer.save(author=self.request.user)

        return super(BlogViewSet,self).perform_create(serializer)

class TagsViewSet(viewsets.ModelViewSet):
    queryset=Tags.objects.all
    serializer_class= TagsSerializer

class PostedViewSet(viewsets.ModelViewSet):
    queryset=Posted.objects.all
    serializer_class= PostedSerializer


模板



<div class="row">
  <div class="col-sm-12">
    <div class="well">
      <div class="blog">
        <div class="blog__meta">
          <a href="#">
            +{{ blog.author.first_name }}
          </a>
        </div>

        <div class="blog__content">
          <p>{{ blog.title }}</p>
          <p>{{ blog.posted}}</p>
          <p>{{ blog.tags}}</p>
          <p>{{ blog.content }}</p>

        </div>
      </div>
    </div>
  </div>
</div>





提前致谢

最佳答案

您可以使用SlugRelatedField选项将特定字段作为关系对象返回。例如,

class BlogsSerializer(serializers.ModelSerializer):
author = AccountSerializer(read_only=True,required=False)
tags = serializers.SlugRelatedField(
    many=True,
    read_only=True,
    slug_field='name'
 )
class Meta:
    model = Blogs
    fields = ('id','author','title','tags','posted','content','created_at','updated_at')
    read_only_fields=('id','created_at','updated_at')

10-08 04:42