Я бы удалил поле site
на моей Photo
модели и добавил бы ForeignKey
к Gallery
. Я бы удалил limit_choices_to
из photos
полей на Gallery
модели.
Поскольку вы используете ForeignKey
с Site
с, это означает, что сайты не делятся галереями и фотографиями. Поэтому упоминание выше уже бесполезно.
class Photo(models.Model):
title = models.CharField(max_length=100)
gallery = models.ForeignKey(Gallery, related_name='photos')
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)
def __unicode__(self):
return self.name
Как только вы установите site
в галерее, все ее фотографии наследуют это свойство. И сайт будет доступен как photo_instance.gallery.site
:
@property
def site(self):
return self.gallery.site
Это должно работать так, как если бы у вас было поле site
. Но я не проверял это.
Все изменится или, конечно, если вы решите, что галерея или фотография могут появляться на нескольких сайтах.