Les modèles ci-dessous montrent une relation GenericForeignKey simple. Il a été configuré de cette manière pour permettre à une image d'être réutilisée par n'importe quel autre modèle.Création d'un admin inline qui affiche le modèle final au lieu de la table de liens GenericForeignKey
class Image(models.Model):
name = models.CharField(max_length=150)
desc = models.TextField(max_length=400)
resource = models.ImageField(upload_to='imgs/generic/%Y/%m/%d')
def __unicode__(self):
return self.name
class ImageItem(models.Model):
image = models.ForeignKey(Image, related_name='items', db_index=True)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField(db_index=True)
object = generic.GenericForeignKey('content_type','object_id')
class Meta:
unique_together = (('image', 'content_type', 'object_id'),)
def __unicode__(self):
return u'%s [%s]' % (self.object, self.image)
class ImageInline(generic.GenericTabularInline):
model = ImageItem
À l'heure actuelle à l'aide ImageInline au sein de l'administration d'un autre modèle affiche une zone de liste avec toutes les images du système.
Est-il possible d'obtenir que l'administrateur inline affiche le modèle d'image réel, affichant uniquement les images affectées au modèle en cours d'édition? Permettant ainsi à l'utilisateur de voir immédiatement toutes les informations liées sur les images attachées au modèle en cours d'ajout/édition. En plus d'être en mesure d'ajouter/supprimer des images connexes.
Merci d'avance pour votre aide sur celui-ci.
Ceci est une bonne idée, et certainement résoudre le problème que je J'ai. Cependant, je voulais que les images soient réutilisables pour réduire la redondance des données et donc permettre par exemple deux articles d'utiliser la même image. Pensez-vous que cela pourrait être fait en utilisant un gestionnaire du côté du modèle Image? – Nick
Vous pouvez également utiliser FileBrowseField à partir de http://code.google.com/p/django-filebrowser/. De cette façon, les fichiers ne seraient téléchargés qu'une seule fois dans FileBrowser. –