안녕 유래 사람들,장고 : ManyToMany 위젯은 이중 목록으로
을 표시되지 않습니다나는 이중 친화적 더 많은 사용자에게 (그리고 나중에 실제 장고 사이트에서) 관리자 페이지에서 M2M 위젯을 변경하려면 목록 (예 : one)
나는 django.contrib.admin.widgets.FilteredSelectMultiple이 나를 대신 할 수 있음을 이해합니다. 그러나, 나는 그것을 작동하게하는 데 어려움이있다. 내 admin.py에 아래 코드를 추가했지만 관리 앱에서 모델을 볼 때 위젯이 변경되지 않습니다.
here에서 코드를 채택하려고했습니다. 모든 SupplierProfile은 WorldBorder 모델 (GeoDjango example 기준)의 하나 이상의 국가에 연결해야합니다.
코드의 결함은 어디에 있습니까? 나는 그것이 왜 표시되지 않을지 알 수 없다. 도움을 주셔서 감사합니다. admin.py
의
from django import forms
from django.contrib.admin.widgets import FilteredSelectMultiple
from django.contrib.gis import admin
from django.utils.translation import ugettext_lazy as _
from apps.profile.models import (UserProfile,
SupplierProfile)
from apps.gis_data.models import WorldBorder
class WorldBorderAdmin(admin.ModelAdmin):
filter_horizonal = ('name',)
class SupplierProfileAdminForm(forms.ModelForm):
distribution_location_country = forms.ModelMultipleChoiceField(
queryset = WorldBorder.objects.all(),
required = False,
widget = FilteredSelectMultiple(
verbose_name = _('Distribution Country'),
is_stacked=False
)
)
class Meta:
model = SupplierProfile
def __init__(self, *args, **kwargs):
super(SupplierProfileAdminForm, self).__init__(*args, **kwargs)
if self.instance:
self.fields['distribution_location_country'].initial = self.instance.distribution_location_country.all()
def save(self, commit=True):
profile = super(SupplierProfileAdminForm, self).save(commit=False)
profile.distribution_location_country = self.cleaned_data['distribution_location_country']
if commit:
profile.save()
profile.save_m2m()
return profile
class SupplierProfileAdmin(admin.ModelAdmin):
form = SupplierProfileAdminForm
admin.site.register(SupplierProfile, admin.OSMGeoAdmin)
업데이트 코드는 아래에 언급 한 바와 같이 이중 목록을 정의 할 수 있습니까? "distribution_location_country"는 SupplierProfile의 m2m 필드입니다. 웬일인지, 그것은 아직도 끝나지 않고있다.
from django import forms
from django.contrib.admin.widgets import FilteredSelectMultiple
from django.contrib.gis import admin
class SupplierProfileAdmin(admin.OSMGeoAdmin):
filter_horizontal = ('distribution_location_country',)
admin.site.register(SupplierProfile, SupplierProfileAdmin)
안녕하세요. 올바른 등록 정보는 무엇입니까? -> admin.site.register (SupplierProfile, admin.SupplierProfileAdmin) 또는 -> admin.site.register (SupplierProfile, SupplierProfileAdmin)? 첫 번째 매개 변수를 사용하면 다음 오류가 발생합니다. "AttributeError 예외 값 : v'module '개체에'SupplierProfileAdmin '특성이 없으므로 두 번째 솔루션에서도 오류가 발생합니다. 도와 줘서 고마워! – neurix
@neurix 첫 번째는 오타였습니다. 두 번째 오류는 무엇입니까? 올바른 것으로 보입니다. 기본 클래스 조정을 시도 했습니까? 내 편집을 참조하십시오. – agf
도움 주셔서 감사합니다! 귀하의 게시물에서 변경 사항과 함께, 나는 "인스턴스가 일대일 키 값을 가지고 다래 대 관계를 사용할 수 있기 전에 새로운 오류가 발생합니다." 이전에 "filter_horizontal"을 시도했지만 작동하지 않았습니다. 더 나은 해결책이 될 것입니다. 새로운 오류에 대해 생각하십니까? 기본 키는 어떻게 할당합니까? – neurix