gpt4 book ai didi

python - 如何显示 Django 中 ManyToMany 字段的值而不是 Id?

转载 作者:行者123 更新时间:2023-12-01 07:38:54 26 4
gpt4 key购买 nike

我有两个模型

  1. 影响者
class Influencer(models.Model):

full_name = models.CharField('Full Name',max_length=255)
username = models.CharField('Username',max_length=255,unique=True)
photo = models.URLField(blank=True,max_length = 500)
email_id = models.EmailField('Email Id',blank=True,max_length=500)
categories = models.ManyToManyField(Category,blank=True,max_length=400)

和2.类别

class Category(models.Model):
name = models.CharField(max_length=400)

def __str__(self):
return self.name

影响者有很多领域类别。

我的 View 功能显示所有影响者是:

def index(request):
influencers = Influencer.objects.all().order_by('followers')

paginator = Paginator(influencers,16)
page = request.GET.get('page')
paged_listings = paginator.get_page(page)
user_list = UserList.objects.all().filter(user_id = request.user.id)
queryset = list(chain(paged_listings,user_list))
ser_query = serializers.serialize('json', queryset)
return HttpResponse(ser_query,content_type='application/json')

HttpResponse 包含类别 ID,而不是类别名称,如下所示: enter image description here

其中categories是一个包含类别id的数组。我想显示类别的名称而不是它们的 ID。

我认为这可以使用 Django Rest Framework 嵌套序列化器来实现,但目前我没有使用 DRF。

最佳答案

django中有一个natural_key方法可以将id转换为字符串

在 models.py 文件中添加natural_key方法

class Category(models.Model):
name = models.CharField(max_length=400,)

def __str__(self):
return self.name

def natural_key(self):
return self.name

然后在您的 serializers.serializer 中,您需要传递 use_natural_foreign_keys=True,

ser_query = serializers.serialize('json', influencers,indent=2,use_natural_foreign_keys=True,)

关于python - 如何显示 Django 中 ManyToMany 字段的值而不是 Id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56823382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com