2011-11-20 3 views
2

에 라디오 버튼에 OneToOneField지도 :장고 나는 다음과 같은 한 관리 인터페이스

class A(models.Model): 
    true_b = models.OneToOneField('B', related_name='is_true') 

    def save(self, *args, **kwargs): 
     if self.true_b not in self.b_set.all(): 
      raise ValueError('True_b has to be among those B that refer to this A') 
     super(A, self).save(*args, **kwargs) 

class B(models.Model): 
    a = models.ForeignKey(A) 
    ... 
    @property 
    def is_true(self): 
     return a.true_b == self 

B모든 항목을 가지고 true_b에 대한 관리 인터페이스에서 드롭 다운 목록을 생성하고, 유효성 검사는 선택한 항목이 실제로 A을 다시 참조하는지 확인합니다.

관리자 인터페이스의 드롭 다운 목록 대신, B의 각 항목에 대해 선택한 항목을 true_b 값으로 매핑하는 라디오 필드를 가질 수 있습니까?

이렇게하면 항목을 선택하기가 쉽고 (이름을 찾아 드롭 다운 목록에서 선택하는 대신) 사용자는 A에 속하지 않는 항목을 선택할 수 없습니다.

답변

0

이 모델에 대한 자신의 양식을 만들 수

class MyAdmin() 
    class Meta() 
     form=MyFormForAdmin 
+0

단지 모델의 전체 양식을 다시 작성하지 않고도 true_b''이 특정 변경하는 것이 가능 관리 클래스에 전달? – abstractpaper

+0

전체 양식을 다시 작성하고 ModelForm을 작성해야하며 init 메소드에서 필드의 위젯을 변경해야합니다. 다음을 확인하십시오 : https://docs.djangoproject.com/en/1.3/topics/forms/modelforms/ – szaman