2016-06-27 5 views
1

を投稿する属性を、私は次のモデルジャンゴ休憩フレームワーク - 多くの分野に多くのシリアル化すると、操作

class Metrics(models.Model): 
    name = models.CharField(
     max_length=255, 
     blank=True, 
     verbose_name='Nombre' 
    ) 
    value = models.DecimalField(
     max_digits = 5, 
     decimal_places = 3, 
     verbose_name = 'Valor', 
     null = True, 
     blank = True 
    ) 

そして、私はManyToManyField関係を持っている別のモデルでを持ってMetricsモデルへ

class PatientMonitoring(models.Model): 
    metrics = models.ManyToManyField(Metrics, verbose_name='Métricas', 

) 

マイserializers.pyこの方法のファイルの外観:

class MetricsSerializer(serializers.HyperlinkedModelSerializer): 
    class Meta: 
     model= Metrics 
     fields = ('name','value',) 

class PatientMonitoringSerializer(serializers.HyperlinkedModelSerializer): 
    metrics = MetricsSerializer(many=True) 

    class Meta: 
     model = PatientMonitoring 
     fields = ('url', 'id', 'metrics') 
     #depth=2 

    def create(self,validated_data): 
     metrics_data = validated_data.pop('metrics') 
     metric = Metrics.object.create(**validated_data) 
     for metric_data in metrics_data: 
      Metrics.objects.create(metric=metric,**metrics_data) 
     metric.save() 
     return metric 

結果は私のモデルは、シリアライズされていることですが、彼らは、 `は、POSTの許可とフォームビューを持っていけない、更新されたり

enter image description here

を作成し、私はとの仕事のために、ここで作成する方法、which is describedを定義していますされていませんモデルはシリアライズされ、書き込み操作と書き込み操作はありますが、どのようにプロセスがこの機能をすべて果たしているのか分かりません。 このような場合にPOSTメソッドを使用してモデルと属性を操作する方法はありますか?

*私は、このような@RossRogersや@Nirriとしてcurl経由POST操作を実行したUPDATE

が私を提案し、動作は以下の通りです:

curl -X POST http://localhost:8000/api/patientmonitoring/ -d "metrics=Grados" 

そして、私はこのメッセージが表示されます私のcreateメソッドとの関係

File "/home/bgarcial/.virtualenvs/nrhb_dev/lib/python3.5/site-packages/rest_framework/serializers.py", line 191, in save 
    self.instance = self.create(validated_data) 
    File "/home/bgarcial/workspace/neurorehabilitation-project/patient_monitoring/serializers.py", line 37, in create 
    metric = Metrics.object.create(**validated_data) 
AttributeError: type object 'Metrics' has no attribute 'object' 
[28/Jun/2016 17:19:16] "POST /api/patientmonitoring/ HTTP/1.1" 500 104669 
+1

[curl](https://en.wikipedia.org/wiki/CURL)json? –

+0

@RossRogers私のJSON公開モデルをカール経由で直接消費できるかどうかを確認しますか?肯定的な場合: '' 'curl http:// localhost:8000/api/patientmonitoring/6/ {" url ":" http:// localhost:8000/api/patientmonitoring/6/"、" id ":6 {"name": "値":null}、{"name": "Grados"、 "value":null}、{"name": "Grados"、 "value" :null}]}% '' ' – bgarcial

答えて

1

HTML入力ではサポートされていません。

ここでは(http://www.django-rest-framework.org/topics/3.2-announcement/)のように、3.3リリース用に計画されていましたが、リリースノートには記載されていません。

あなたがPOSTリクエストを行う権限を持っていないわけではありません。 DHC、郵便配達員、またはカールしている生のJSON(あなたの投稿のコメントに示唆されているように)を使ってPOSTリクエストを作成してみてください。

+0

元の投稿のコードにStringRelatedFieldの言及はありません。この質問はあなたに役立つかもしれませんが:http://stackoverflow.com/questions/31936401/string-related-field-in-djangorest – Nirri

+0

「StringRelatedField」は適切ではありませんが、以前のコメント/質問。私はあなたが私をサポートできる場合、私の現在の問題に関連して私の元の質問を更新しました。 – bgarcial

+1

オブジェクトです。オブジェクトではありません。あなたはタイプミスがあります。 – Nirri

関連する問題