Comment les objets à modifier en ligne par rapport générique inverse panneau d'administration?

StackOverflow https://stackoverflow.com/questions/8839287

Question

Je voudrais pouvoir ajouter les objets en ligne d'image Galerie dans Admin (comme je l'essayer dans admin.py ci-dessous). Le problème est que le modèle d'image n'a pas de champ content_type. Il soulève une exception. Je voudrais faire la même chose avec des objets vidéos. Voici mes models.py et admin.py et plus description ci-dessous

Mon models.py

# -*- coding: utf-8 -*-

# Create your models here.
from apps.util import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
from django.utils.translation import ugettext_lazy as _


class Image(models.Model):
    """

    """
    title = models.CharField(_('Title'), max_length=255)
    image = models.ImageField(upload_to="images")
    pub_date = models.DateTimeField(_('Date published'))           

    def __unicode__(self):
        return self.title

class Video(models.Model):

    title = models.CharField(_('Title'), max_length=255)
    video = models.FileField(upload_to="videos")
    pub_date = models.DateTimeField(_('Date published'))

    def __unicode__(self):
        return self.title 

class Gallery(models.Model):

    title = models.CharField(_('Title'), max_length=255)
    pub_date = models.DateTimeField(_('Date published'))

    def __unicode__(self):
        return self.title

class GalleryItem(models.Model):
    gallery = models.ForeignKey(Gallery)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

    def __unicode__(self):
        return str(self.object_id)  

Mon admin.py

from django.contrib import admin
from apps.webmachinist.media.models import *
from apps.webmachinist.portfolio.models import *
from django.contrib.contenttypes import generic

class GalleryInline(generic.GenericTabularInline):
    model = Image

class GalleryAdmin(admin.ModelAdmin):
    inlines = [
        GalleryInline,
    ]

admin.site.register(Image)
admin.site.register(Video)
admin.site.register(Gallery, GalleryAdmin)
admin.site.register(GalleryItem)
admin.site.register(PortfolioEntry)

Je peux le faire facilement en sens inverse: ajouter Galerie à une image, comme ça:

class GalleryInline(generic.GenericTabularInline):
    model = GalleryItem

class GalleryAdmin(admin.ModelAdmin):
    inlines = [
        GalleryInline,
    ]

admin.site.register(Image, GalleryAdmin)

Je peux choisir par titre Galerie, bien en ligne est pour GalleryItems Mais ce n'est pas ce que je veux. Je veux juste ajouter des images à des galeries (et plus tard Vidéos) non Galeries d'images.

Peut-il être fait facilement?

Était-ce utile?

La solution

Vous ne devriez pas être inline Image, mais plutôt GalleryItem. Ensuite, à partir de chaque GalleryItem vous pouvez l'associer à tout à travers elle est la clé étrangère générique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top