Thank you for your reply. Yes I have selected a user and folder. I believe ManyToMany fields are always optional (hence many to many). So my users and company fields are optional, but my folder field isn't. When I add a new Application in the Admin I do specify a folder and users (if I don't I would at least get a 'Required field' error for the folder field). I've tested the method above (clean function) with another model that has a manytomany field, and it does exactly the same thing, even when I really do fill in the data. In fact, if I delibirately throw an error and look in the debug info I can see the ManyToMany field data being present in the POST data, just like I can when I do the same thing with the above models.
Btw, I just noticed a typo in my Folder model description above, that's not the issue as it's correct in my original model. On Jul 14, 2:02 pm, Nuno Maltez <nuno.li...@gmail.com> wrote: > Hi, > > Just a guess: have you actually selected a user and a folder when > submitting the form? I think only valid field are present on the > cleaned_data dict, and your users and folder fields are not optional > (blank=True, null=True). > > hth, > nuno > > On Tue, Jul 13, 2010 at 1:45 PM, Heleen <heleen...@gmail.com> wrote: > > Hello, > > > I have the following classes: > > class Application(models.Model): > > users = models.ManyToManyField(User, through='Permission') > > folder = models.ForeignKey(Folder) > > > class Folder(models.Model): > > company = models.ManyToManyField(Compnay) > > > class UserProfile(models.Model): > > user = models.OneToOneField(User, related_name='profile') > > company = models.ManyToManyField(Company) > > > Now when I save application, I would like to check if the users do not > > belong to the application's folder's companies. > > I have posed this question before and someone came up with the > > following sollution: > > forms.py: > > class ApplicationForm(ModelForm): > > class Meta: > > model = Application > > > def clean(self): > > cleaned_data = self.cleaned_data > > users = cleaned_data['users'] > > folder = cleaned_data['folder'] > > if > > users.filter(profile__company__in=folder.company.all()).count() > 0: > > raise forms.ValidationError('One of the users of this > > Application works in one of the Folder companies!') > > return cleaned_data > > > admin.py > > class ApplicationAdmin(ModelAdmin): > > form = ApplicationForm > > > This seems like right the way to go about this. The problem is that > > neither the users nor folder fields are in the cleaned_data and I get > > a keyerror when it hits the users = cleaned_data['users'] line. > > > I was hoping that someone here could explain to me why these > > manytomany fields don't show up in cleaned_data and that someone could > > possibly give me a sollution to my problem. > > > Thanks! > > Heleen > > > -- > > You received this message because you are subscribed to the Google Groups > > "Django users" group. > > To post to this group, send email to django-us...@googlegroups.com. > > To unsubscribe from this group, send email to > > django-users+unsubscr...@googlegroups.com. > > For more options, visit this group > > athttp://groups.google.com/group/django-users?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.