Ne kadar ilgili model alanlar Django Rest Çerçeve kullanarak dahil mi?
Ben şu modeli var ki:
class Classroom(models.Model):
room_number = [....]
class Teacher(models.Model):
name = [...]
tenure = [...]
classroom = models.ForeignKey(Classroom)
Hadi bu gecelik gibi bir sonuç almak yerine ManyRelatedPrimaryKeyField işlevi olduğunu söylüyor:
{
"room_number": "42",
"teachers": [
27,
24,
7
]
},
tam ilgili model gösterimini içeren bir şey gibi dönüş var:
{
"room_number": "42",
"teachers": [
{
'id':'27,
'name':'John',
'tenure':True
},
{
'id':'24,
'name':'Sally',
'tenure':False
},
]
},
Bu mümkün mü? Eğer öyleyse, nasıl? Ve bu kötü bir fikir mi?
CEVAP
En basit yolu the depth argument kullanmaktır
class ClassroomSerializer(serializers.ModelSerializer):
class Meta:
model = Classroom
depth = 1
Ancak, bu sadece öğretmenlerin alan ters bir ilişki olduğundan bu durumda sana lazım değil, ileriye, ilişkiler, ilişkiler de dahildir.
Eğer daha karmaşık gereksinimleri (örn. varsa ters ilişki vardır, bazı alanlarda yuva, ama diğerleri, ya da yuva alanları belirli bir alt değil) 15**, örn
class TeacherSerializer(serializers.ModelSerializer):
class Meta:
model = Teacher
fields = ('id', 'name', 'tenure')
class ClassroomSerializer(serializers.ModelSerializer):
teachers = TeacherSerializer(source='teacher_set')
class Meta:
model = Classroom
Seri hale getirici alanını kaynağı olarak kullanmak için öznitelik belirtmek için kaynak bağımsız kullanıyoruz unutmayın. Teacher
model, yani on related_name seçeneğini kullanarak yerine teachers
öznitelik sağlayarak source
bağımsız uğrayabiliriz. classroom = models.ForeignKey(Classroom, related_name='teachers')
Akılda tutulması gereken bir şey iç içe serializers şu anda yazma işlemleri desteklemez. Yazılabilir gösterimleri için, normal düz beyan, pk ya da köprü gibi kullanmalısınız.
Django REST çerçeve: model olmayan ser...
Model alan Güney kullanarak yeniden ad...
Kolay bir model Django kullanarak yeni...
Django: bir şablonu birden çok model f...
Ne kadar çok alanı ile Django bir mode...