2013-05-16 17 views
1

항목을 보여줍니다장고 모든 아니라 관련 내가 같은 보이는 개체 구조를 가지고

부서 - 많은 한 - 여기

개체 내 models.py입니다 (내 admin.py는 표준) :

class Customer(models.Model): 
    customerName = models.CharField(max_length=64) 


class Department(models.Model): 
    departmentName = models.CharField(max_length=64) 


class Location(models.Model): 
    customer = models.ForeignKey(Customer) 
    departments = models.ManyToManyField(Department) 


class Object(models.Model): 
    location = models.ForeignKey(Location) 
    department = models.ForeignKey(Department) 
,

문제점은 객체 용 부서를 설정하려고 할 때마다 장고 관리자의 모든 부서가 드롭된다는 점입니다. 나는 심지어 다른 고객의 위치와 관련이있는 부서를 얻는다.

또한 개체의 부서를 설정할 때 다른 고객과 관련된 모든 사용 가능한 부서의 동일한 목록을 얻게됩니다.

드롭 다운을 사용하면 고객이 지원하는 부서 만 표시 할 수 있습니까?

+0

'models.py' 및 해당 앱에 대한'admin.py'로 질문을 업데이트하십시오. –

답변

1

빠른 한 줄 솔루션은 많은에 많은을 필터링 할 formfield_for_manytomany을 사용하는 것입니다 생각 관계가이 관리 객체에 삽입됩니다.

filter_horizontal = ('departments',)

0

당신은 필터링의 검색어로 자신의 양식을 제공 할 수

class DepartmentAdminForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(DepartmentAdminForm, self).__init__(*args, **kwargs) 
     self.fields['customers'].queryset = Customer.objects.filter(...) 

    class Meta: 
     model = Department 


class DepartmentAdmin(admin.ModelAdmin): 
    form = DepartmentAdminForm 
관련 문제