를 연결하는 model
다음과 같습니다 Part
전화 :어떻게이 두 개의 외래 키를 필드
class Part(model.Model) =
some attributes...
uses = models.ForeignKey('self', null = True, blank = True, on_delete = models.SET_NULL, limit_choices_to={'used_in' : None}, related_name = 'part_uses')
used_in = models.ForeignKey('self', null = True, blank = True, on_delete = models.SET_NULL, related_name = 'device_used_in')
한 Part
수 use
및/또는 used_in
다른 Part
일을하지만 그것이 그들의 알아야합니다을 , 이것을 DetailView
에 표시 할 수 있습니다. 즉, 두 가지 사이에 어떤 종류의 관계가 있다는 것을 아는 것만으로는 충분하지 않습니다. Parts
을 알고 싶습니다. 종류의 관계입니다. (따라서 두 개의 다른 필드). 이제 한 객체에서 uses
을 업데이트하고 다른 객체가 used_in
으로 설정되면 예 : a.uses(b)
b.used_in(a)
을 자동으로 설정하고 싶습니다.
UpdateView
예를 들어 a.uses
이 변경되면 form_valid
방법으로 수동 설정하여 b
을 찾고 used_in
을 변경합니다. 예를 들어
는 :
if 'used_in' in form.changed_data:
if self.object.used_in:
other_device = Device.objects.filter(pk= self.object.used_in.pk)[0]
other_device.uses = self.object
other_device.save()
그러나,이 몇 가지 단점이있다. 우선 수동으로해야 할 필요가 없으며 다른 방법으로는 해결할 수없는 것인지 궁금해하고 있지만 Google에서 아무 것도 찾지 못했습니다. 두 번째 문제는 하나의 Part
이 여러 개의 다른 Parts
을 사용할 수 있지만 내 방법으로는 인 마지막 Part
만 표시된다는 것입니다.
제 질문은 모델 내부에있는 두 개의 외래 키를 연결하거나 한 개의 외래 키로 이동하거나 다른 방식으로 수행하는 것이 가능하다는 것입니다.
a_uses_b = a.uses (b) 및 b_used_by = b.uses_set – Vaibhav
그리고 내가 이것을하면 나중에 사용과 is_used 사이를 구별 할 수 있습니까? – LizzAlice