IT story

Django : 기본 키를 지정하지 않고 조명기를 만드시겠습니까?

hot-time 2020. 12. 30. 19:18
반응형

Django : 기본 키를 지정하지 않고 조명기를 만드시겠습니까?


Django 설비에 대해 저를 괴롭히는 것 중 하나는 모든 모델의 기본 키를 지정해야한다는 것입니다. 각 행에 대한 기본 키를 지정하지 않고 조명기를 만드는 방법이 있습니까?


"pk : 1"(또는 기타) 대신 "pk : null"을 사용하면 PK가 None으로 설정되고 개체가 저장 될 때 기본 키가 할당됩니다.

이것은 적어도 YAML에서 작동합니다. 손으로 만드는 경우 사용하고 있다고 생각합니다.


pk를 사용하지 않고 관계를 추가하려는 경우 Natural Keys를 살펴 봐야합니다.

https://docs.djangoproject.com/en/dev/ref/django-admin/#dumpdata-app-label-app-label-app-label-model


manage.py dumpdata 명령을 확인하면 --natural-foreign, --natural-primary라는 몇 가지 옵션이 표시됩니다. 출력을 보면 기본 키 또는 외래 키를 사용하지 않고 객체가 덤프되는 것을 볼 수 있습니다.


내 친구가 fixture모듈을 제안했습니다 . http://farmdev.com/projects/fixture/


기존 DB 스키마를 변경할 가능성없이 처리해야했기 때문에 복잡한 기본 키가 있거나 전혀없는 테이블이 필요하지만 직렬 키는 없습니다. 제가 한:

필드에 primary_key = True를 지정했습니다.이 필드는 전혀 고유하지 않아야하며 오버로드 된 메서드를 작성했습니다.

class ContraIndicationsMedicines(models.Model):

    contra_indication = models.ForeignKey(ContraIndication, primary_key=True)
    medicine = models.ForeignKey(Medicine)

    def validate_unique(self, exclude=None): 
        pass

사실, 그것은 내 필요에 맞았지만 django.contib.admin. * 내부에 더 많은 유효성 검사 호출이 있으며 모든 인라인 등이 작동하도록 보장되는 것은 아닙니다. 이것이 내가 구현할 수있는 유일한 해결책이었습니다 ... ((

참조 URL : https://stackoverflow.com/questions/1499898/django-create-fixtures-without-specifying-a-primary-key

반응형