[python] 장고 자기 참조 외래 키
나는 일반적으로 webapps 및 데이터베이스에 익숙하지 않으므로 이것이 멍청한 질문 일 수 있습니다. 모델의 다른 인스턴스 (부모)의 기본 ID를 가리키는 필드로 모델 ( “CategoryModel”)을 만들고 싶습니다.
class CategoryModel(models.Model):
parent = models.ForeignKey(CategoryModel)
어떻게해야합니까? 감사!
답변
모델 이름을 ForeignKey에 문자열로 전달하면 올바른 작업을 수행합니다.
그래서:
parent = models.ForeignKey("CategoryModel")
또는 “self”라는 문자열을 사용할 수 있습니다
parent = models.ForeignKey("self")
답변
‘self’문자열을 사용하여 자체 참조를 표시 할 수 있습니다.
class CategoryModel(models.Model):
parent = models.ForeignKey('self')
https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey
답변
https://books.agiliq.com/projects/django-orm-cookbook/en/latest/self_fk.html
class Employee(models.Model):
manager = models.ForeignKey('self', on_delete=models.CASCADE)
또는
class Employee(models.Model):
manager = models.ForeignKey("app.Employee", on_delete=models.CASCADE)
https://stackabuse.com/recursive-model-relationships-in-django/
답변
또한 null = True 및 blank = True를 설정해야합니다.
class CategoryModel(models.Model):
parent = models.ForeignKey("self", on_delete=models.CASCADE, null=True, blank=True)
null = True, 데이터베이스에서 허용
blank = True, 양식 유효성 검사에서 허용