2017-12-07 2 views
0

인스턴스가 특정 모델과 관련 될 예정이면 정리 작업 중에 알 수있는 방법이 있습니까?Django : 잠재 관계의 이름을 기반으로 정리하십시오.

아직 아무 것도 저장되지 않았기 때문에 질문이 들리다고 생각합니다. 그러나 Django 코드의 다른 부분 인 post_save signal에는 데이터가 대량 작업에서 왔는지 또는 실수로 표시되지 않는지를 이해하는 방법이 있습니다. 양식이 팝업 창에 표시됩니다. 다음은 어떻게 든 가능하다면

이 궁금 :

class A(models.Model): 
    date = models.DateField() 


class AForm(forms.ModeForm): 
    def clean(self): 
     data = super().clean() 
     if <related_name> == 'from_b': # Is something like this possible? 
      data['date'] = data['date'].replace(year=2110) 


class B(models.Model): 
    a_key = models.ForeignKey(A, related_name='from_b') 


class C(models.Model): 
    a_key = models.ForeignKey(A, related_name='from_c') 
+0

질문이 기괴하게 들릴뿐만 아니라 완전히 불분명하다는 말이 맞습니다. "이해하는 방법"은 무엇입니까? –

+0

@DanielRoseman 죄송합니다. 내 말씨는 원시 매개 변수가있는 [post_save] (https://docs.djangoproject.com/en/dev/ref/signals/#post-save) 신호에서 영감을 받았습니다. 'clean' 메소드와 관련이 없습니다. – raratiru

+0

하지만 여전히 의미가 없습니다. AForm은 A 객체를 편집하기위한 것입니다. 그것은 무엇과도 관련이 없습니다. 이는 B 또는 C를 편집하여 가리킬 때만 발생합니다. –

답변

0

문제는 순진 방법으로 문제를 접근한다. 다니엘 Roseman에 명성이 여기 저기 구현 될 수있는 더 많은 가능한 솔루션 레이아웃이다

class A(models.Model): 
    date = models.DateField() 


class B(models.Model): 
    a_key = models.ForeignKey(A, related_name='from_b', blank=True) 


class BForm(forms.ModeForm): 
    date = forms.DateField() 

    def clean_date(self): 
     data = super().clean() 
     # Clean accordingly 
     actual_foreignkey, created = A.objects.get_or_create(data['date']) 
     data['a_key'] = actual_foreignkey 
     return data 

그것은 초기 값 take care 할 필요가있다.

관련 문제