2

다음 두 장고 클래스 MyClassAMyClassB이 있습니다.Django :이 클래스의 인스턴스없이 다른 클래스의 역방향 외래 키 조회를 수행하는 방법은 무엇입니까?

MyClassB에는 MyClassA의 인스턴스에 대한 외래 키 참조가 있습니다. MyClassA 내에서

from django.db import models 

class MyClassA(models.Model): 
    name = models.CharField(max_length=50, null=False) 

    @classmethod 
    def my_method_a(cls): 
     # What do I put here to call MyClassB.my_method_b()?? 


class MyClassB(models.Model): 
    name = models.CharField(max_length=50, null=False) 
    my_class_a = models.ForeignKey(MyClassA, related_name="MyClassB_my_class_a") 

    @staticmethod 
    def my_method_b(): 
     return "Hello" 

의 정적 메서드 my_method_b의 클래스 메소드 my_method_a, 나는 MyClassB 전화하고 싶습니다 '. 내가 어떻게 해? my_method_a이 인스턴스 메서드 인 경우 self.MyClassB_my_class_a.model.my_method_b()을 사용합니다. 하지만 MyClassA의 인스턴스가 없으므로 어떻게해야할지 모르겠다.

self 대신 cls을 사용할 수 있습니까?

+1

아니요 중복입니다. MyClassA 인스턴스가 없을 때이 작업을 수행하는 방법을 묻습니다. –

+0

사과 - 철회 투표. – techydesigner

답변

1

staticmethod이므로 인스턴스가 필요하지 않습니다.

MyClassB.my_method_b()으로 직접 전화 할 수 있습니다.

+0

'my_method_a()'에서'MyClassB'에 대해 알지 못합니다. 그들은 별도의 파일에 있습니다. 'my_method_a()'에서'my_method_b()'로 들어가기 위해'related_name' 필드를 사용할 수 있습니까? –

+0

그래서 뭐? MyClassB를 가져 오면됩니다. 어떤 이유로 든 그렇게하지 않으려면 ['get_model (app_label, model_name = 'MyClassB')'] (https://docs.djangoproject.com/en/1.10/ref/applications/#)을 사용할 수 있습니다. 대신 django.apps.AppConfig.get_model). – wim