我需要与模特的特殊关系

时间:2013-10-30 13:29:50

标签: django django-models django-admin

我正在为一位拥有应用程序名为的摄影师开展一个项目:所有照片都有4个预定类别,每张照片属于一个类别。

我想要的是管理员有一个名为Categories的部分。当您点击它时,管理员必须显示4个预定类别,当您点击特定类别时,必须有上传照片的选项。

我的意思是,本节的最终结构必须是:

  

ADMIN ----> 类别 ------>

     
      
  1. 类别1 ----->上传属于cat1的照片
  2.   
  3. 类别2 ----->上传属于cat2的照片
  4.   
  5. 类别3 ----->上传属于cat3的照片
  6.   
  7. 类别4 ----->上传属于cat4的照片
  8.   

我有这段代码:

class Category(models.Model):

    CATEGORY_CHOICES = (
        ('CAT1', 'Category 1'),
        ('CAT2', 'Category 2'),
        ('CAT3', 'Category 3'),
        ('CAT4', 'Category 4'),
        )
    category = models.CharField(verbose_name='Category', max_length=3, choices=CATEGORY_CHOICES, help_text='Choose de category of the image upload')

    def __unicode__(self):
        return u"%s"%self.category

    class Meta:
        verbose_name='Image'
        verbose_name_plural='Images'


class ImageCategory(models.Model):
    category = models.ForeignKey(Category, verbose_name='Category')
    image = models.ImageField(verbose_name='Image', upload_to='images/')

    def __unicode__(self):
        return u"%s"%self.category

    class Meta:
        verbose_name='Image'
    verbose_name_plural='Images'

在管理员中

class ImageCategoryInline(admin.TabularInline):
    model=ImageCategory
    classes=('open',)
    inline_classes=('open',)
    extra=0

class CategoryAdmin(admin.ModelAdmin):
    inlines = [ImageCategoryInline]

admin.site.register(Category, CategoryAdmin)

1 个答案:

答案 0 :(得分:0)

一想法: 使每个图像成为具有外键到类别的模型。然后使用管理内联图像并将其添加到类别管理类。

通过此功能,您可以在每个类别中拥有无限量的图像,并在管理员中添加和删除它们。

事实上,这就是你已经做过的!这种方法有问题吗?