i think you should look at using threadlocals to access users outside
the request instead of sending the user id in a hidden field.
http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser
quite straightforward
On Dec 24, 2:10 am, l5x <[EMAIL PROTECTED]> wrote:
> class Photo(models.Model):
> user = models.ForeignKey(User)
> main = models.BooleanField(_('Is main?'))
> icon = models.ImageField(_('Icon'), upload_to='photo', null=True,
> blank=True,
> help_text=_('Don\'t touch! It will be
> generated automatically'))
> medium = models.ImageField(_('Medium'), upload_to='photo',
> null=True, blank=True,
> help_text=_('Don\'t touch! It will be
> generated automatically'))
> big = models.ImageField(_('Photo'), upload_to='photo', null=True,
> blank=True)
>
> description = models.TextField(_('Description'))
>
> class Admin:
> list_display = ('user', 'description')
>
> def _save_FIELD_file(self, field, filename, raw_contents,
> save=False):
> import sha
> import random
> import Image
> ext = filename[-3:]
> if ext == 'JPG' or ext == 'jpg':
> ext = 'JPEG'
> filename = sha.new(filename+str(random.random())).hexdigest()
> filename = "%s_%s.%s" % (self.user_id, filename, ext)
> super(Photo, self)._save_FIELD_file(field, filename,
> raw_contents, save=False)
> im = Image.open(u'/home/project/site_media/'+self.big)
> im.thumbnail((300, 400), Image.ANTIALIAS)
> im.save('/home/project/site_media/photo/'+filename, ext)
>
> med = Image.open(u'/home/project/site_media/'+self.big)
> med.thumbnail((120, 160), Image.ANTIALIAS)
> filename = sha.new(str(random.random())).hexdigest()
> filename = "%s_%s.%s" % (self.user_id, filename, ext)
> med.save('/home/project/site_media/photo/'+filename, ext)
> self.medium = 'photo/%s' % filename
>
> icon = Image.open(u'/home/project/site_media/'+self.big)
> icon.thumbnail((60, 80), Image.ANTIALIAS)
> filename = sha.new(str(random.random())).hexdigest()
> filename = "%s_%s.%s" % (self.user_id, filename, ext)
> icon.save('/home/project/site_media/photo/'+filename, ext)
> self.icon = 'photo/%s' % filename
>
> class PhotoForm(ModelForm):
> user = forms.IntegerField(widget=forms.HiddenInput)
> class Meta:
> model = Photo
> fields = ('user', 'big', 'main', 'description')
> ==
>
> def gallery(request):
> data = request.POST.copy()
> try:
> a = data['main']
> other = Photo.objects.filter(user=request.user)
> for o in other:
> o.main = False
> print "main? ", o.main
> o.save()
>
> except KeyError:
> print "key error"
> photos = Photo.objects.filter(user=request.user).count()
> print photos
> if photos == 0:
> data['main'] = 'on'
>
> if request.POST:
> photo_form = PhotoForm(request.POST, request.FILES)
> if photo_form.is_valid():
> photo_form.save()
> else:
> pre_data = {'user': request.user.id }
> photo_form = PhotoForm(pre_data)
>
> gallery = Photo.objects.filter(user=request.user)
>
> return render_to_response('Member/gallery.html', {'gallery':
> gallery, 'photo_form': photo_form},
>
> context_instance=RequestContext(request))
>
> I have two issues:
>
> 1) When I use photo_form.save() I get: (1048, "Column 'user_id' cannot
> be null"), despite the fact that the user is in the POST data:
> description: u'my desc'
> user: u'2'
>
> 2) I wrote:
>
> pre_data = {'user': request.user.id }
> photo_form = PhotoForm(pre_data)
>
> And there is a HiddenInput for User ForeignKey in the PhotoForm
>
> But is there any other way to pass the information about User?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---