2009-10-12 2 views
4

Я хочу интегрировать фотолог с моим приложением Django и использовать его для отображения фотографий в инвентаре транспортных средств ... как и то, что предлагает Boost Motor Group Inc. Я уже интегрировал приложение, поэтому следующий шаг, который Я пытаюсь выяснить, как подключить его к модели моего автомобиля, а также как отображать фотографии. Моя модель автомобиля выглядит следующим образом BTWИнтеграция фотолога

class Vehicle(models.Model): 
    stock_number = models.CharField(max_length=6, blank=False) 
    vin = models.CharField(max_length=17, blank=False) 
    common_vehicle = models.ForeignKey(CommonVehicle) 
    exterior_colour = models.ForeignKey(ExteriorColour) 
    interior_colour = models.ForeignKey(InteriorColour) 
    interior_type = models.ForeignKey(InteriorType) 
    odometer_unit = models.ForeignKey(OdometerUnit) 
    status = models.ForeignKey(Status) 
    odometer_reading = models.PositiveIntegerField() 
    selling_price = models.PositiveIntegerField() 
    purchase_date = models.DateField() 
    sales_description = models.CharField(max_length=60, blank=False) 
    feature_sets = models.ManyToManyField(FeatureSet, blank=True) 
    features = models.ManyToManyField(Feature, blank=True) 

    def __unicode__(self): 
     return self.stock_number 
+0

Где находятся фотографии? На модели автомобиля? Вы хотите одну фотографию или много? Может ли одна фотография принадлежать многим транспортным средствам? ИМО не может ответить на ваш вопрос с какой-либо степенью точности, пока мы не узнаем немного больше о том, что вы пытаетесь выполнить. –

+0

Фотографии принадлежат модели автомобиля и будут много ... в списке инвентаря, я хочу иметь четыре миниатюры для каждого автомобиля, а затем на странице деталей автомобиля. У меня есть все остальные фотографии. Кроме того, транспортные средства не могут делиться фотографиями – 2009-10-13 05:05:26

ответ

5

Я использую ImageKit

model.py

from imagekit.models import ImageModel 
class Photo(ImageModel): 
    name = models.CharField(max_length=100) 
    original_image = models.ImageField(upload_to='photos') 
    num_views = models.PositiveIntegerField(editable=False, default=0) 
    content_type = models.ForeignKey(ContentType) 
    object_id = models.PositiveIntegerField() 
    content_object = generic.GenericForeignKey('content_type', 'object_id') 

    class IKOptions: 
     # This inner class is where we define the ImageKit options for the model 
     spec_module = 'cms.specs' 
     cache_dir = 'photos' 
     image_field = 'original_image' 
     save_count_as = 'num_views' 

class Vehicle(models.Model): 
    images = generic.GenericRelation('Photo', blank = True, null = True) 

specs.py

from imagekit.specs import ImageSpec 
from imagekit import processors 
from imagekit.lib import * 

# first we define our thumbnail resize processor 
class ResizeThumb(processors.Resize): 
    width = 100 
    height = 75 
    crop = True 

# now lets create an adjustment processor to enhance the image at small sizes 
class EnchanceThumb(processors.Adjustment): 
    contrast = 1.2 
    sharpness = 1.1 

# now we can define our thumbnail spec 
class Thumbnail(ImageSpec): 
    processors = [ResizeThumb, EnchanceThumb] 

в шаблоне вы получите доступ к этой миниатюры, как это (здорово!):

{% for p in vehicle.images.all %} 
    {{ p.get_thumbnail.url }} 
{% endfor %} 

admin.py может выглядеть следующим образом:

class ImagesInline(generic.GenericTabularInline): 
    model = Photo 
    max_num =4 

class VehicleAdmin(admin.ModelAdmin): 
    inlines = [ImagesInline] 

О ImageKit

редактировать

добавить файл specs.py в Уре приложение и сказать ImageKit его как этот

class IKOptions: 
     # This inner class is where we define the ImageKit options for the model 
     spec_module = 'cms.specs # ur_app.specs 

редактировать 2

добавьте поле в свою фотомодель, чтобы сохранить вид/контент, который он показывает. то есть ChoiceField

В поле зрения/шаблон вы можете отфильтровать для него

+0

позволит мне указать, какие фотографии будут отображаться в какой позиции ... например, на странице списков я хочу отобразить четыре фотографии (вид спереди, вид сбоку, интерьер и приборная панель)? Мне нравится идея enitr imagekit, хотя ... позвольте мне попробовать это – 2009-10-16 16:36:36

+0

это задача для шаблонов ur – vikingosegundo

+0

Я пробовал это, и все, что я получаю, было Ошибка: Не удалось загрузить конфигурационный модуль imagekit: cms.specs .. – 2009-10-16 17:08:22

8

Для ваших целей я рекомендую вам проверить django-imagekit (я написал как imagekit и photologue). Он был разработан для интеграции в другие приложения, а не как самостоятельное приложение. После этого, как сказал Доминик, нам нужно будет узнать больше о ваших требованиях.

+1

+1 как довольно жалкий способ сказать спасибо за Photologue - в настоящее время питание aarongriffin.co.uk очень красиво. –

 Смежные вопросы

  • Нет связанных вопросов^_^