【问题标题】:Django REST Framework ModelField requires 'model_field' kwargDjango REST 框架模型字段需要“模型字段”kwarg
【发布时间】:2015-01-17 18:34:58
【问题描述】:

我对 Django REST 框架有点陌生。我收到了这个奇怪的错误,这可能是由一些简单的事情引起的,我写了“奇怪”,因为我用谷歌搜索了好几次,但找不到任何参考。

型号:

class Records(models.Model):
    owner = models.ForeignKey(User, null=True)
    activity = models.ForeignKey(Activity, null=True)
    time_start = models.DateTimeField(null=True)
    time_end = models.DateTimeField(null=True)
    ...

序列化器:

class RecordSerializer(serializers.ModelField):
    activity = serializers.PrimaryKeyRelatedField()
    now = datetime.today()
    owner = serializers.CharField(source='owner.username', read_only=True)
    time_start = serializers.DateTimeField(source='now')

    class Meta:
        model = Records
        fields = ("owner", "activity", "time_start")

查看:

class StartApiView(generics.CreateAPIView):
    model = Records
    serializer_class = RecordSerializer

    def pre_save(self, obj):
        obj.owner = self.request.user

网址:

urlpatterns = patterns('',
    # Today app
    url(r'^today/$', views.TodayView.as_view(), name='today'),
    url(r'^start/$', views.StartApiView.as_view(), name='start'),
    ...

POST 请求来自主干,它所拥有的 JSON 是一个 dict:{"activity":"1"}。我错过了什么?该视图应该创建一个新的 Records 对象,并将活动 ForeignKey 字段设置为 POST 请求中收到的活动并保存。

我得到的错误是:

ValueError at /times/start/
ModelField requires 'model_field' kwarg

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    您的序列化程序基类错误。它应该是 ModelSerializer 而不是 ModelField。

    from rest_framework import serializers
    
    class RecordSerializer(serializers.ModelSerializer):
        # serializer implementation
    

    【讨论】:

      猜你喜欢
      • 2017-10-22
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      • 2018-01-01
      • 2018-08-09
      • 2012-03-12
      • 2017-06-04
      • 2012-05-13
      相关资源
      最近更新 更多