如何在DRF 3中的ModelSerializer上添加非模型字段?即添加一个在我的实际模型中不存在的字段?
class TestSerializer(serializers.ModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='vote_detail')
non_field = serializers.CharField() # no corresponding model property.
class Meta:
model = vote
我想序列化一个模型,但又想包括一个额外的字段,该字段需要在要序列化的模型实例上执行一些数据库查找:
class FooSerializer(serializers.ModelSerializer):
my_field = ... # result of some database queries on the input Foo object
class Meta:
model = Foo
fields = ('id', 'name', 'myfield')
这样做的正确方法是什么?我看到序列化程序的,正确
我有一个带有ArrayField tags的模型,我需要它将它来回序列化为由逗号分隔的一系列值。
models.py
from django.contrib.postgres.fields import ArrayField
class Snippet(models.Model):
tags = ArrayField(models.CharField(max_length=255), default=list)
我希望像tag1,tag2,tag3这样的标记来处理这个字段,我可以在模型save()方法中处理这个问题,但是DRF正在向{tags: ["Expected a li
我正在用DRF编写一个模型应用程序。我的模型是这样的:
class Superhero(models.Model):
squad_name = models.CharField(max_length=100)
hometown = models.CharField(max_length=30)
formed = models.DateField()
active = models.BooleanField()
members = JSONField()
我的视图集如下所示:
class SuperheroViewSet(viewsets.ViewSet)
我正在为一个webapp应用程序开发一个api。我最初使用的是tastypie,然后切换到了django-rest-framework (drf)。Drf对我来说很容易。我打算做的是创建嵌套的用户配置文件对象。我的模型如下
from django.db import models
from django.contrib.auth.models import User
class nestedmodel(models.Model):
info = models.CharField(null=True, blank=True, max_length=100)
class UserPr
我想问一下如何正确使用Django REST Framework (DRF) ModelSerializers来从模型序列化。
我有两个必填字段的Django模型:
class Book(models.Model):
title = models.CharField()
desc = models.CharField()
我有DRF ModelSerializer:
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = [&
Django DRF图像字段不接受空值。
我的模型由image = models.ImageField(upload_to='uploads/', blank=True, null=True)组成
如果我上传一个文件就没问题了。但是,如果将其保留为空白,则会出现以下错误:
The submitted data was not a file. Check the encoding type on the form.
我想使图像字段是可选的,所以我设置了null=True和blank=True。但这似乎行不通。
我是在django中创建API的新手。我检查了DRF序列化程序,发现它们在处理DB中的模型时很有用。我的API不使用模型,它们是基于表单的。
所以我的问题是:在我的视图中使用DRF验证器比使用django表单验证器能得到什么?也许内容类型更方便(application/x-www-form-urlencoded vs application/json)?
当模型字段验证失败时,我希望DRF在错误消息中返回字段verbose_name。
示例:
models.py:
class MyClass(models.Model):
myfield = model.CharField(max_length=20,\
verbose_name="This is the field",\
default="blabla")
serialiers.py:
class MyClassSerializer(s
当我试图更新我的模型时,我的序列化程序不包含pk字段。我的序列化程序看起来是这样的:
class BookSerializer(serializers.ModelSerializer):
pages = PageSerializer(many=True)
class Meta:
model = Book
fields = ('pk', 'tite', 'pages')
当我从一个http.get调用中得到我的书时,数据包含pk键。但是,当我用http.put方法发布这些数据时,序列化程序中vali
我正在使用一些相当大的模型(大约80个字段)从事Django项目。我使用Django Rest框架的ModelSerializer来序列化模型,使用ViewSets为我的前端提供API。
这很好,但我想减少服务器正在传输的数据量。我的大多数模型字段是可选的,许多实例只有其中几个实例的值。在这些情况下,,我只想序列化那些值为(即是真实的)的字段。
我想我可以在串行化端或模型端这样做,但我不太明白这两个人是如何相互交谈的。
我当前的序列化程序非常简单:
class OutfitSerializer(serializers.ModelSerializer):
class Meta:
mo
我有一个模型、一个视图和一个序列化程序,它们产生代表医学测试的以下响应:
{
"name": "electrocardiogram",
"cost": "180.00",
"results": [
{
"id": "bff25813-5846-4eac-812f-7e57d8fbb496",
"lots more things" : "were here, but I hi
我觉得这是一个超级基本的问题,但在DRF文档中很难找到答案。
假设我设置了一个models.py,如下所示:
#models.py
class Person(models.Model):
name = models.CharField(max_length=20)
address = models.CharField(max_length=20)
class House(models.Model):
name = models.CharField(max_length=20)
owner = models.ForeignKey(Person)
我有一个Mode