지인의 시퀀스

기본 개념

자료 표 : 추상적 인 형태로는, 그 자체가, 공공 필드를 제공하기 위해, 상속 않습니다 설계 완료되지 데이터베이스 마이그레이션

class BaseModel(models.Model):
    is_delete = models.BooleanField(default=False)
    created_time = models.DateTimeField(auto_now_add=True)

    class Meta:
        # 基表,为抽象表,是专门用来和继承,提供公有字段,自身不会完成数据库迁移
        abstract = True

테이블 연관 관계 끄기

  • 심지어 테이블 쿼리 운영 효율성에 영향을 미치지 않습니다
  • 심지어 테이블 CRUD 운영 효율성을 향상시킬 수
  • 후반 데이터베이스 테이블을 재구성하기 쉬운
  • 데이터베이스 자체도 테이블을 검출되지 않는다는 단점은 쉽게 오염 데이터가 존재할 필요 파라미터들은 엄격한 논리에 의한 오염을 방지 할
  • 종속 B, A 1 삽입 기록 미국 B에 대응하는 레코드의 기록은 관련 사건의 부재하에 제조 작업이 달성 될 수 있지만, 데이터가 오염, 데이터 B를 첨가 한 후, 더티 데이터를 처리한다. 제 회동 동작 B를 과정 A 후에 만족 이상의 논리적 사고는 동일하게 수행 될 수있다. 논리도 테이블 룩업 테이블 AB 것이다 의해 예외가 없을 것

테이블 관계를 구축

  • 도서 테이블과 테이블은 많은 게시됩니다 다당제 북에 외래 키
  • 그리고 많은 책 저자 : 높은 주파수 중 하나의 외래 키는 도서 조회
  • 저자와 AuthorDetail 하나는 : AuthorDetail의 실제 필요에 따라 적절한 위치에 외부 키를 설정하려면
class Book(BaseModel):
    name = models.CharField(max_length=64)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    publish = models.ForeignKey(to='Publish', related_name='books', db_constraint=False, on_delete=models.DO_NOTHING, null=True)
    authors = models.ManyToManyField(to='Author', related_name='books', db_constraint=False)

    def __str__(self):
        return self.name


class Publish(BaseModel):
    name = models.CharField(max_length=64)
    address = models.CharField(max_length=64)


class Author(BaseModel):
    name = models.CharField(max_length=64)

class AuthorDetail(BaseModel):
    phone = models.CharField(max_length=64)
    author = models.OneToOneField(to=Author, related_name='detail', on_delete=models.CASCADE, db_constraint=False)

외래 키 필드 속성

  • , 앞으로 필드 이름을 검색 반대 related_name을 확인하십시오 역방향 조회에서 외래 키 필드 이름 외래 키를 Related_name
  • on_delete 외래 키가 계단식으로 나타 내기 위해 제공되어야한다, 장고 1.x에서에서, 시스템은 기본 (값 models.CASCADE), 장고 2.X를 제공하고, 수동으로 명확해야
    • CASCADE : 기본 값, 캐스케이드
    • DO_NOTHING : 외래 키가 어떠한 처리없이 표 A 표 B 의존 레코드 삭제 B 표 외부 키 필드 가정, 연접하지
    • SET_DEFAULT : 종속 테이블 B 테이블 A, B 기록 삭제, 기본 속성 설정 값에 표 외부 키 필드는 기본 속성과 가정하자 사용해야합니다
    • SET_NULL : 가정하자 종속 테이블 B 테이블 A는 B 기록 삭제, 표 외부 키 필드 값이 null, null 인 = True를 사용 속성을 사용해야합니다
  • 당신이 연쇄 관계를 처리하려는 경우 On_delete-많은 분야가 기본적 계단식, 캐스케이드로 설정할 수 없습니다, 당신은 테이블에 여러 외래 키를 처리, 수동으로 테이블 사이의 관계를 지워야합니다
  • 컨트롤과 연결된 외부 키 테이블을 db_constraint, 관련 기본 제공 참, 거짓 표현 해리가 있음을 나타냅니다

## 시퀀스 :

  • 그것은 단지 직렬화에 사용할 수 있습니다
  • 필드 이름은 외래 키 필드해야합니다
  • 사용자 정의 시퀀스 아웃 사이더 키 필드에 대해, 사용자 정의 직렬화 필드는 안티 - 직렬화에 포함되지 않으며, 우리가 창고에 넣지 수 있도록 아이는, 외래 키 이름을 직렬화해야
  • 외래 키 연관 데이터가 중복, 필요성은 명확합니다many=True
  • 때문에 서브 시퀀스의 유형으로 단방향 동작 시퀀스가, 상단에 기록해야, 상기 순서의 반대 방향으로 생성 할 수없는
from rest_framework import serializers
from . import models


class BookModelSerializers(serializers.ModelSerializer):
    class Meta:
        model = models.Book
        fields = '__all__'


class PublishModelSerializers(serializers.ModelSerializer):
    books = BookModelSerializers(many=True)
    class Meta:
        model = models.Publish
        # fields = '__all__'
        fields = ['name', 'address', 'books']

추천

출처www.cnblogs.com/setcreed/p/12104906.html