Paq*_*rez 9 django rest django-rest-framework
因为我可以在元模型类中使用两个,当我运行它时,我得到一个错误如何使用模型?这是Django Rest的一个例子
from rest_framework import serializers
from .models import Post,Miembros
class PostSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Post
fields = ('id', 'url', 'titulo', 'contenido','fecha_evento','fecha_evento','banner_grande','lugar')
model = Miembros
fields = '__all__'
Run Code Online (Sandbox Code Playgroud)
/ api/posts /中的TypeError
fields选项必须是列表或元组.得了str.请求方法:GET请求URL:http://127.0.0.1 :8000/api/ postts / Django版本:1.8.3异常类型:TypeError异常值:该fields选项必须是列表或元组.得了str.异常位置:/home/root-master/restcosolg/cslg/local/lib/python2.7/site-packages/rest_framework/serializers.py in get_field_names,第900行Python可执行文件:/ home/root-master/restcosolg/cslg/bin/python Python版本:2.7.6
Ada*_*ler 18
我知道这个答案是在提出这个问题几年之后,但我已经遇到过几次这种情况。出于某种原因,它需要一个列表而不是单个值。
因此,如果您不想使用该__all__值,但模型中只有 1 个值,则需要确保在 fields 部分中有一个逗号 , :
class Meta:
model = Post
fields = ('id',)
Run Code Online (Sandbox Code Playgroud)
Rah*_*pta 14
更新(2016年5月5日):
__all__对于价值fields是现在支持在ModelSerializer(感谢@wim您指出).
您还可以将
fields属性设置为特殊值,'__all__'以指示应使用模型中的所有字段.如果您只想在模型序列化程序中使用默认字段的子集,则可以使用
fields或exclude选项,就像使用ModelForm.这是强烈建议您明确设置应使用序列化的所有字段fields属性. 这样可以减少模型更改时无意中暴露数据的可能性.
您似乎正在尝试将Django ModelForm fields属性与DRF序列化程序fields属性混合使用.
在DRF序列化程序中,属性的__all__值无效fields.
其次,您不能在Meta类中指定多个模型.您将需要使用2个单独的序列化程序并将它们相互连接.
例如,您可以执行以下操作:
from rest_framework import serializers
from .models import Post,Miembros
class MiembrosSerializer(serializers.ModelSerializer):
"""
serializer for Miembros model
"""
class Meta:
model = Miembros
fields = '__all__' # all model fields will be included
class PostSerializer(serializers.HyperlinkedModelSerializer):
"""
serializer for Post model
"""
miembros = MiembrosSerializer()
class Meta:
model = Post
fields = ('id', 'url', 'titulo', 'contenido','fecha_evento','fecha_evento','banner_grande','lugar')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14119 次 |
| 最近记录: |