2010-12-03 42 views
5

Je vais avoir un modèle simple Gallery, qui est lié à un modèle Image par plusieurs-à-plusieurs à travers une table qui a une ordering -attribut:Django: InlineAdmin et ManyToManyField avec « à »

# models.py 
class Image(models.Model): 
    .... 

class Gallery(models.Model): 
    images = models.ManyToManyField(Image, through='ImageGallery') 
    .... 

class ImageGallery(models.Model) 
    image = models.ForeignKey(Image) 
    gallery = models.ForeignKey(Gallery) 
    ordering = models.PositiveIntegerField(_('ordering'), default=0) 

# admin.py 
class ImageGalleryAdmin(admin.ModelAdmin): 
    model = ImageGallery 

class GalleryAdmin(admin.ModelAdmin): 
    inlines = (ImageGalleryAdmin,) 

Je suis en train d'éditer la table 'through' via un admin inline. Ce que je voudrais faire est de pouvoir télécharger/modifier les images directement dans l'admin inline, donc je voudrais savoir si quelqu'un connaît un extrait existant, qui me permet d'éditer le champ du 'through'-table avec les champs du modèle référencé (l'image), n'ayant pas besoin d'éditer la clé étrangère sélectionnez ....

+0

Je voudrais la même chose ... Juste pour clarifier la question quelque peu, en utilisant des django standard, les attributs du modèle final ne sont pas disponibles - seuls les attributs du modèle 'through' (par exemple le paramètre order) peuvent être édité en ligne. Je pense que ce qui est souhaité est que le paramètre d'ordre et les paramètres de l'objet lié soient éditables dans la même ligne. – bjw

Répondre

-1

Je n'aurais pas compris votre question. Tu ne peux pas utiliser simplement:

classe ImageAdmin (admin.ModelAdmin)

inlines = (ImageGalleryAdmin,) 

admin.site.register (Image, ImageAdmin)