当前位置: 首页 > 知识库问答 >
问题:

在Django中将模型字段添加到非模型序列化程序

方绪
2023-03-14

我用的是Django 2。十、

我有一个用于验证请求的序列化程序。(不是ModelSerializer)

class ExecuteSerializer(serializers.Serializer):

    database = serializers.IntegerField(required=True)
    query = serializers.CharField(required=True)

    user = serializers.HiddenField(
        default=serializers.CurrentUserDefault()
    )

    def validate(self, attrs):
        user = attrs.get('user', None)

        try:
            database = Database.objects.get(pk=attrs.get('database', None), collection__user=user)
        except Database.DoesNotExist:
            raise ValidationError({
                'database': ['Does not exists']
            })

        attrs['database'] = database
        return attrs

数据库是对数据库模型的引用。

我希望用户在数据库字段中传递数据库id,但在验证后,got被转换为数据库对象。

我试图重写validate()方法,并将数据库对象分配给数据库字段,但它给出了错误

TypeError: int() argument must be a string, a bytes-like object or a number, not 'Database'

共有1个答案

微生旻
2023-03-14

由于您正在为数据库字段使用IntegerField,因此应该在validate方法中返回int作为数据库值,例如database。身份证件:

def validate(self, attrs):
    user = attrs.get('user', None)

    try:
        database = Database.objects.get(pk=attrs.get('database', None), collection__user=user)
    except Database.DoesNotExist:
        raise ValidationError({
            'database': ['Does not exists']
        })

    attrs['database'] = database.id  # fix is here
    return attrs
 类似资料:
  • 假设我有以下模型,和模型序列化器: 模型。派克 serializers.py 问题是我想在views.py中使用这个对象something_else,而不是进行另一个数据库查询。有什么方法可以通过串行化程序传递它,而不会在调用serializer.is_valid()方法时导致串行化程序验证错误。

  • 问题内容: 我有一个简单的模型,其中包括, 和领域。 在管理方面,可能在其他地方,我想显示为: 对我而言,执行此操作的逻辑位置是在模型中通过创建一个这样的计算字段: 最终,我认为我需要以字符串形式获取名称字段的值。我得到的错误是。字符串所需的值。我不知道这是什么意思。 一定有一种简单的方法可以做到这一点,我敢肯定我不是第一个想要这样做的人。 编辑:下面是我的代码修改为丹尼尔的答案。我得到的错误是:

  • 问题内容: 我是Django REST框架的初学者,需要你的建议。我正在开发Web服务。该服务必须提供与其他服务的REST接口。我需要实现的REST接口无法直接与我的模型一起使用(我的意思是获取,放置,发布,删除操作)。相反,它为其他服务提供了一些计算结果。根据请求,我的服务会进行一些计算,只是将结果返回(不将结果存储在自己的数据库中)。 以下是我对如何实现REST接口的理解。纠正我,如果我错了。

  • 我是Django REST框架的初学者,需要您的建议。我正在开发一个web服务。该服务必须向其他服务提供REST接口。我需要实现的REST接口并不直接与我的模型一起工作(我指的是get、put、post和delete操作)。取而代之的是,它向其他服务提供一些计算结果。在一个请求中,我的服务进行一些计算并返回结果(不将结果存储在自己的数据库中)。 下面是我对如何实现REST接口的理解。纠正我,如果我

  • 问题内容: 当谈到Dart中的JSON编码时,根据Seth Ladd的赞誉 ,现在最终批准的正式方式是+ 。 假设我们有一堆模型类(PODO),例如: 现在,我希望能够像这样对我的域对象进行JSON编码: 不幸的是,这行不通… …除非我们明确告知如何编码: 我真的必须在模型类的每个类中添加一个方法,还是有更好的方法? 编辑 :这是我正在寻找的简单序列化: 例如,在ServiceStack.Text

  • 问题内容: 在我的模型中,我想要一个包含三联列表的字段。例如。是否存在可以将这些数据存储在数据库中的字段? 问题答案: 你可以使用JSON将其转换为字符串并将其存储为字符串。 例如, 你可以在类中添加方法以自动为你转换。