-1
Person
とAppointment
という2つのモデルがあります。 があるDjango RESTフレームワーク1対多の関連フィールドデータの挿入とフィルタリング
from rest_framework import serializers
from appointment.models import Person, Appointment
class AppointmentSerializer(serializers.ModelSerializer):
class Meta:
model = Appointment
fields = ('date',)
class PersonSerializer(serializers.ModelSerializer):
appointments = AppointmentSerializer(many=True)
class Meta:
model = Person
fields = ('name', 'email', 'appointments',)
def create(self, validated_data):
appointments_data = validated_data.pop('appointments')
person = Person.objects.create(**validated_data)
for appointment_data in appointments_data:
Appointment.objects.create(person=person, **appointment_data)
return person
、最終的に私のビューセットは次のとおりです:
models.py
class Person(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField()
def __str__(self):
return self.name
class Appointment(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE, related_name='appointments')
date = models.DateField(unique=True)
class Meta:
ordering = 'date',
def __str__(self):
return str(self.date)
と私のserializers.pyファイルがある
class PersonViewSet(viewsets.ModelViewSet):
serializer_class = PersonSerializer
queryset = Person.objects.all()
filter_backends = [DjangoFilterBackend]
filter_fields = ['name', 'appointments']
私の予想として、この戻りpersons_list:
[
{
"name": "Arif Hasan",
"email": "[email protected]",
"appointments": [
{
"date": "2016-10-10"
},
{
"date": "2016-10-17"
},
{
"date": "2016-11-07"
}
]
},
{
"name": "Atanu Shome",
"email": "[email protected]",
"appointments": [
{
"date": "2016-11-13"
}
]
}
]
- ここで新しい予定を作成することはできません。
- 人を日付範囲でフィルタリングできません。
フィルターが働いている、あなたは私を助けてくださいすることができますしかし、どのように私はここに新しい予定を作成することができます。 –
どのようなエラーが発生しています。また、日付でフィルターをかけることはできないと言いました。正確なエラーを指定してください。 – Kishan
1人が多くのアポイントメント・デートを持っているので、特定の日付でフィルタリングすると、その日付のすべての人が返されます。 –