저는 컴퓨터의 하드웨어를 하나로 묶는 앱을 만들고 있습니다. 이것은 장고와 함께 작업 한 첫 번째 시간입니다. 나는 다음과 같은 모델을 가지고 말 :Django manytomany : 고유하지 않은 여러 개의 관계를 추가 하시겠습니까?
class Memory(models.Model):
partNum = models.CharField()
capacity = models.CharField()
class Computer(models.Model):
name = models.CharField()
memory = models.ManyToManyField(Memory)
# also has cpus, hard drives, and motherboard, but focus on memory for now
한 메모리 개체는 많은 컴퓨터 개체에 속할 수 있고, 하나의 컴퓨터 개체는 많은 메모리 개체를 가질 수 있습니다 - hense 대다. 그러나 둘 이상의 컴퓨터를 사용하는 경우 컴퓨터에 동일한 메모리 스틱이 필요합니다.
그러나 django의 manytomany 필드 (기본값은?)는 메모리 - 컴퓨터 관계의 인스턴스 하나만 허용하며, 고유해야합니다. 이 주변의 어떤 방법?
관리자 페이지에서 동일한 메모리 개체를 컴퓨터에 많이 추가하려고하면 "이 컴퓨터 및 메모리와 컴퓨터 - 메모리 관계가 이미 있습니다"라는 메시지가 나타납니다. manage.py 쉘의 서버 객체에 동일한 메모리 객체를 두 번 이상 추가하려고하면 하나의 메모리 객체 만 추가 된 것처럼 보입니다. 중복 항목을 갖도록 데이터베이스를 수동으로 편집하려고하면 해당 항목이 이미 있음을 알리는 오류가 발생합니다. 나는 데이터베이스 구조에서 어떤 일종의 "고유 한 함께"색인을 수행하는 것을 보았습니다. 그 조항을 제거하기 위해 테이블을 변경했다면 문제가 해결 될까요? 아마도 장고 관리자가 예상보다 바보가 아닌 한 아마 없습니다.
내 옵션에는 어떤 것이 있습니까? 내 자신의 중간 모델을 작성하고 through
구조를 사용합니까? 그런데 멋진 filter_horizontal 위젯을 사용하지 않을 것입니다! 내 컴퓨터 모델을 외래 키 필드와 메모리 개체 수 필드를 다시 작성 하시겠습니까? 그런 다음 ManyToMany API 기능을 사용할 수 없습니다. 도움!
감사합니다. 이것은 내가 생각하는 최고의 타협이다. –