에서 당신은 fooapp에 UserChoiceSortItem 모델을 추가 할 수 있으며이 모델의 객체가 다른 모델을 정렬 우선 순위를 개최 :
class UserChoiceSortItem(models.Model):
_models = [
(0, 'Profiles'),
(1, 'Groups'),
.
.
.
]
sort_field = models.CharField(max_length=200)
priority = models.IntegerField()
model = models.IntegerField(choices=_models)
_model_type = None
@property
def model_class(self):
if self._model_type is None:
from django.apps import apps
_models = ['fooapp.CustomProfile', 'django.contrib.auth.Group', ...]
self._model_type = apps.get_model(*_models[self.model].rsplit('.', 1))
return self._model_type
그리고 당신은보기 또는 형태로 UserChoiceSortItems 모델의 개체를 사용할 수 있습니다 :
.
.
.
order_fields = []
for sort_item in UserChoiceSortItems.objects.all().order_by('priority'):
if isinstance(curent_model_objects, sort_items.model_class):
order_fields.append(sort_item)
curent_model_objects.order_by(*order_fields)
choice_field.choices = order_fields
.
.
.
또한 당신은 예컨대 기구 fooapp에서를 (사용하여 다른 고객에 대해 서로 다른 상태를 시작할 수 있습니다. 첫 번째 고객 fooapp/설비/customer1.json)에 대한 :
[
{
'pk': 1,
'model': 'fooapp.UserChoiceSortItems',
'fields': {
'sort_field': 'username',
'priority': 0,
'model': 'fooapp.CustomProfile'
}
},
{
'pk': 2,
'model': 'fooapp.UserChoiceSortItems',
'fields': {
'sort_field': 'first_name',
'priority': 1,
'value': 'fooapp.CustomProfile'
}
},
{
'pk': 3,
'model': 'fooapp.UserChoiceSortItems',
'fields': {
'sort_field': 'last_name',
'priority': 2,
'model': 'fooapp.CustomProfile'
}
},
.
.
.
]
와 두 번째 고객 fooapp/설비/customer2.json에 대한
:
[
{
'pk': 1,
'model': 'fooapp.UserChoiceSortItems',
'fields': {
'sort_field': 'first_name',
'priority': 0,
'model': 'fooapp.CustomProfile'
}
},
{
'pk': 2,
'model': 'fooapp.UserChoiceSortItems',
'fields': {
'sort_field': 'last_name',
'priority': 1,
'value': 'fooapp.CustomProfile'
}
},
.
.
.
]
및
syncdb
후 아래의 명령으로 데이터를로드 할 수 있습니다.
1 고객 :
이
./manage.py loaddata customer1
customer2 :
./manage.py loaddata customer2
당신과 장고 - 관리자에 정렬 우선 순위를 편집하고 즐길 수있는 고객이 ...
이해가 안 무엇이야 [order_by] (https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.order_by) 사용에 문제가 있습니까? – DRC
@DRC 피드백에 감사드립니다. 저는 질문을 업데이트했습니다 : 고객 특정 코드를 fooapp에 넣고 싶지 않습니다. 고객이 좋아하는 방식으로 모든 UserChoiceField를 응용 프로그램에 표시하려면 어떻게합니까? – guettli
고객은 앱을 앱의 일부로 사용하는 Django 코드를 보유하고 있습니까? – RemcoGerlich