본문 바로가기

코딩/장고

장고 onetomany 모델 생성하는법

장고에서 모델을 생성할때 주의할 점 

- 자식 테이블에서 부모를 명시해줌

- 자식 테이블에서 부모의 테이블명과 같게 해주고 소문자로

 

 

1
2
3
4
5
6
7
8
9
# models.py
 
class Academy(models.Model):
    name = models.CharField(max_length=200null=False)
 
 
class Subject(models.Model):
    subname = models.CharField(max_length=200null=False)
    academy = models.ForeignKey(Academy, null=True, on_delete=models.CASCADE, related_name='subjects')

cs

 

 

1
2
3
4
5
6
7
8
# serializer
 
class AcademySerializer(serializers.ModelSerializer):
    subjects = AddSubjectSerializer(read_only=True, many=True# <-----(1)
 
    class Meta:
        model = Academy
        fields = ['id''name''subjects']
cs

 

- serializer에서 자식을 추가할 때 reloated_name이랑 일치시켜줘야 함

www.django-rest-framework.org/api-guide/relations/#stringrelatedfield

1
2
3
4
5
6
7
8
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[
    {
        "id": 1,
        "name": "1학원",
        "subjects": [
            {
                "id": 1,
                "subname": "1과목",
                "academy": 1
            },
            {
                "id": 2,
                "subname": "2과목",
                "academy": 1
            }
        ]
    },
    {
        "id": 2,
        "name": "2학원",
        "subjects": []
    }
]
cs