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 и выбрать нужное количество картинок.
# 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, выбирать картинки и сохранять связь.