Спасибо, за то что направили
Почитал о class-based view и миксинах… есть примерный образ, но пока текст не поддается пониманию. Подскажите еще
forms.py:
class UserFromRequestForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
user = kwargs.pop('user') ########### 'pop(): dictionary is empty'
####### тут не понятно, как из вьюхи должен передаться текущий пользователь?
super(UserFromRequestForm, self).__init__(*args, **kwargs)
self._user = user
class PhotoForm(UserFromRequestForm):
class Meta:
model = Photos
def __init__(self, *args, **kwargs):
super (PhotoForm, self).__init__(*args, **kwargs)
self.fields['estate'].queryset = Photos.objects.filter(estate__user__exact=Estates.objects.get(self._user))
views.py:
редактирование происходит в кабинете пользователя, чтобы упростить делаю прям в стандартном django-profiles
def profile_photo(request, form_class=None, success_url=None,
template_name='profiles/profile_photo.html',
extra_context=None):
username = request.user.username
user = get_object_or_404(User, username=username)
try:
profile_obj = request.user.get_profile()
except ObjectDoesNotExist:
return HttpResponseRedirect(reverse('profiles_create_profile'))
if success_url is None:
success_url = reverse('profiles_profile_detail',
kwargs={ 'username': request.user.username })
if request.method == 'POST':
form = PhotoForm(request.POST, request.FILES)
form.estate = Photos.objects.filter(estate__user__exact = request.user)
if form.is_valid():
try:
image = request.FILES['image']
except:
image = False
form.save()
if image:
filename, fileext = os.path.splitext(unicode(image.name))
filename = str(random.random()).replace('.','')+fileext
form.image.save(filename, image, True)
form.save()
return render_to_response(template_name, {
'form': form,
'flag': True,
}, context_instance = RequestContext(request), )
else:
form = PhotoForm()
if extra_context is None:
extra_context = {}
context = RequestContext(request)
for key, value in extra_context.items():
context[key] = callable(value) and value() or value
return render_to_response(template_name, {'profile': profile_obj,
'form': form,
'thumb': Estates.objects.filter(user=user),
}, context_instance=context)
Наверное есть вариант прям во вьюхе внедрить фильтр списка по пользователю?
В обход формы, но мне кажется это в логике не правильно.
Спасибо