Django admin — выбор нескольких пунктов?

Доброе время суток, столкнулся с такой проблемой: Как можно реализовать возможность выбора нескольких пунктов в админке из одного класса в другом? В общем что-то типа по чек-боксам. Заранее спасибо!

# models.py

class Image(models.Model):
image = models.FileField(upload_to="up_loaded/")
created = models.DateTimeField(auto_now_add=True)
width = models.IntegerField(blank=True, null=True)
height = models.IntegerField(blank=True, null=True)

def save(self, *args, **kwargs):
"""Save image dimensions."""
super(Image, self).save(*args, **kwargs)
im = PImage.open(pjoin(MEDIA_ROOT, self.image.name))
self.width, self.height = im.size
super(Image, self).save(*args, ** kwargs)

def size(self):
"""Image size."""
return "%s x %s" % (self.width, self.height)

def __unicode__(self):
return self.image.name

def thumbnail(self):
return """""" % (
(self.image.name, self.image.name))
thumbnail.allow_tags = True


class Tech(models.Model):
title = models.CharField(max_length=255, help_text='Enter your title of page.')
slug = models.SlugField()
body = models.TextField(help_text='Enter your body of page.')
picture = models.ManyToManyField(Image)
publish_at = models.DateTimeField(default=datetime.datetime.now(), help_text='Date of publication page.')
tags = TaggableManager()

def __unicode__(self):
return self.title

class Meta:
ordering = ['-publish_at',]


То есть у меня два класса Image и Tech, я хочу чтобы в админке из класса Tech я мог переходить в класс Image и выбрать нужное количество картинок.

1 ответов


Если интересуют готовые решения, то можно попробовать StackedInline пакета django.contrib.admin.

В админке:



class ImagesInline(StackedInline):
    model = Image
    verbose_name_plural = "Картинки"
    ...

class TechAdmin(ModelAdmin):
    ...
    inlines = [ ImagesInline ]
    ...
 

Тогда Вы сможете в форме Tech, выбирать картинки и сохранять связь.

Спасибо Вам, всё получилось как я и хотел!