gpt4 book ai didi

python - 在 Django 休息框架中按通用关系的名称设置内容类型

转载 作者:太空狗 更新时间:2023-10-30 00:32:03 26 4
gpt4 key购买 nike

class Foo(models.Model):
bar = models.CharField(max_length=300)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')


class FooSerializer(serializers.ModelSerializer):
class Meta:
model = Foo

class FooViewSet(viewsets.ModelViewSet):
model = Foo
serializer_class = FooSerializer

我现在可以将数据发布到 View 集,如下所示:

{
bar: 'content',
content_type: 1
object_id: 5
}

唯一困扰我的是前端必须知道内容类型 id 的

相反,我希望能够将 content_types 名称(如“用户”)作为 content_type 发布,并让后端确定 id。

最佳答案

DRF 3.x 中用于读/写操作的最简单和最干净的方法:

from django.contrib.contenttypes.models import ContentType
from rest_framework import serializers
from .models import Foo

class FooSerializer(serializers.ModelSerializer):
class Meta:
model = Foo

content_type = serializers.SlugRelatedField(
queryset=ContentType.objects.all(),
slug_field='model',
)

然后您可以使用模型名称执行 CRUD 操作:

data = {
'bar': "content",
'content_type': "model_name",
'object_id': 1,
}

关于python - 在 Django 休息框架中按通用关系的名称设置内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24970610/

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