I’ve got a couple django models that look like this:
from django.contrib.sites.models import Site class Photo(models.Model): title = models.CharField(max_length=100) site = models.ForeignKey(Site) file = models.ImageField(upload_to=get_site_profile_path) def __unicode__(self): return self.title class Gallery(models.Model): name = models.CharField(max_length=40) site = models.ForeignKey(Site) photos = models.ManyToManyField(Photo, limit_choices_to = {'site':name} ) def __unicode__(self): return self.name
I’m having all kinds of fun trying to get the limit_choices_to working on the Gallery model. I only want the Admin to show choices for photos that belong to the same site as this gallery. Is this possible?
I would delete
sitefield on myPhotomodel and add aForeignKeytoGallery. I would removelimit_choices_tofromphotosfields onGallerymodel.Because you are using
ForeignKeys toSites, that means sites don’t share galleries and photos. Therefore having those I mentioned above is already useless.Once you set the
siteon a gallery all its photos will inherit this property. And the site will be accessible asphoto_instance.gallery.site:This should work as if you had a
sitefield. But I haven’t tested it.Things change or course, if you decide that a gallery or a photo can appear in multiple sites.