Решение jAndy, вероятно, лучше всего, но если вы не можете полагаться на фильтр, вы можете сделать что-то вроде:
var myArray = [
{field: 'id', operator: 'eq', value: 'id'},
{field: 'cStatus', operator: 'eq', value: 'cStatus'},
{field: 'money', operator: 'eq', value: "money"}
];
myArray.remove_key = function(key){
var i = 0,
keyval = null;
for( ; i < this.length; i++){
if(this[i].field == key){
keyval = this.splice(i, 1);
break;
}
}
return keyval;
}
Оказывается, мне пришлось изменить шаблоны. Ошибка в Django auth.user. Когда код представления выглядит так:
@login_required
def test(request):
a = User.objects.filter(pk=request.user.id).select_related('profile').get()
return render_to_response('test.html', {'a':a,})
, а шаблон выглядит как
a.username {{ a.username }}<br />
a.get_profile.age {{ a.get_profile.age }}<br />
, a.get_profile игнорирует тот факт, что профиль был загружен с помощью select_related, и выполняет отдельный запрос для профиля.
Однако, если вы закодируете это как:
@login_required
def test(request):
a = Profile.objects.filter(user=request.user).select_related('user').get()
return render_to_response('peeks/test.html', {'a':a,})
и шаблон как:
a.user.username {{ a.user.username }}<br />
a.age {{ a.age }}<br />
, вы получите все одним нажатием, и когда вы отображаете 25 профилей на одной странице, это имеет большое значение.
Сделайте так, чтобы ваши объекты Q ссылались на profile__whatever
и использовали их в User.objects.filter ()
.