컨텍스트 테이블의 한 행을 컨텍스트 테이블의 다른 행과 연결하는 테이블이 있습니다. Django에서 두 개의 외래 키를 추가하려고하는데 관련 이름을 사용해야한다고 말합니다. 관련 이름에 대한 문서를 읽었지만 이해할 수 없습니다. 주석 처리 된 행과 함께 아래 작업 모델을 포함합니다. 다음에는 템플릿도 포함됩니다. 누구나 아래 코드를 수정할 수 있습니까?
model.py
class Relationship (models.Model):
relationship_id = models.AutoField(primary_key=True)
# context_id1 = models.IntegerField()
context_id1 = models.ForeignKey(Context, db_column='context_id1', on_delete = models.PROTECT)
context_id2 = models.IntegerField()
# context_id2 = models.ForeignKey(Context, db_column='context_id2', on_delete = models.PROTECT)
relationship = models.CharField(max_length = 50, blank=True, null=True)
주형
{% for relationship in context.relationship_set.all %}
Current Context:{{relationship.context_id1.number}} <br> # works
Relationship:{{relationship.relationship}} <br> # works
Related Context: {{relationship.context_id2.number}} # fails
{% endfor %}
related_name=…
[장고 문서는] "역에서"당신의 관계의 이름입니다. 그래서 Context
a에서 Relationship
. 여기에서 동일한 모델을 두 번 대상으로하기 때문에 둘 다라는 이름을 지정할 수 없습니다 relationship_set
. 따라서 이러한 다른 related_name
s를 줄 수 있습니다 . 예를 들면 :
class Relationship(models.Model):
id = models.AutoField(primary_key=True, db_name='relationship_id')
context1 = models.ForeignKey(
Context,
db_column='context_id1',
on_delete = models.PROTECT,
related_name='relations_through1'
)
context1 = models.ForeignKey(
Context,
db_column='context_id1',
on_delete = models.PROTECT,
related_name='relations_through2'
)
relationship = models.CharField(max_length = 50, blank=True, null=True)
참고 : 일반적으로 Django는 접미사
_id
가ForeignKey
있는 "twin"필드를 자동으로 추가하므로 필드에 접미사 를 추가하지 않습니다_id
. 따라서context1
대신 이어야합니다.context_id1
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다