내가 다른 테이블의 외래 키로 많은 관계로 많은 사용하려고 해요,하지만 다음과 같은 모델 possible.Consider 경우 잘 모르겠어요 :장고 외래 키
from django.db import models
class Attribute(models.Model):
name=models.CharField(max_length=30)
unit=models.CharField(max_length=30)
class Protocol(models.Model):
name=models.CharField(max_length=30)
attributes=models.ManyToManyField(Attribute,db_table='protocol_attribute')
class Device(models.Model):
serial_number = models.CharField(max_length=30)
id_protocol=models.ForeignKey(Protocol)
class DeviceValues(models.Model):
id_device=models.ForeignKey(Device)
id_protocol_attribute=models.ForeignKey(Protocol.attributes)
value=models.IntegerField()
나는 다음과 같은 오류가 나타납니다이 모델의 유효성을 검사 할 때 :
First parameter to ForeignKey must be either a model, a model name, or the string 'self'
내가 모델 또는 첫 번째 매개 변수로 모델 이름을 사용하고 있지 않다 알고,하지만 난 외래 키로 방법을 참조 할 수 있습니다를 Django가 Protocol과 Attributes 사이의 매핑을 처리하도록 자동으로 생성하는 join 테이블?
가능한 해결 방법은 프로토콜을 외래 키로 Attribute 클래스에 추가 한 다음이 속성을 DeviceValue 클래스에 대한 foreing 키로 사용할 수 있습니다. 그러나 속성을 공유 할 프로토콜을 갖기 때문에 그렇게하고 싶지 않습니다. 각 프로토콜에 대한 속성을 반복하는 것이 아니라 조인 테이블을 만드는 것을 선호합니다.
모든 아이디어가 환영받을 것입니다 .... 감사합니다 !!!
알레한드로
'Protocol.attributes.through'는 작동합니까? –
그것은한다! !! 원래 m2m 관계에있는 것보다 더 많은 외래 키를 중간 테이블에 추가 할 수 없다는 것을 이해했습니다. 그러나 나는 그것을 시도하고 불평하지 않았다. 한 가지 고려해야 할 것은 SQL 파일의 3 개의 외래 키에 대해 UNIQUE 제약 조건을 생성하지 않기 때문에 수동으로 추가해야한다는 것입니다. – user3851205