2016-07-14 2 views
1

С Django я могу использовать OneToOneField как это, чтобы создать отношения:Получить текущую Site_ID при использовании модели в Django

user = models.OneToOneField('auth.User') 

Как я могу сделать модель (пример ниже), что бы получить текущий Site_ID при попытке загрузить изображение:

class Image(models.Model): 
    site = # something here 
    user = models.OneToOneField('auth.User') 
    image = models.ImageField(upload_to='headers') 
    image_thumbnail = ImageSpecField(source='image', processors=[ResizeToFit(1920)], format='JPEG', options={'quality': 90}) 
    image_admin_thumb = ImageSpecField(source='image', processors=[ResizeToFit(300)], format='JPEG', options={'quality': 80}) 
    name = models.CharField(max_length=50) 
    date = models.DateTimeField(auto_now=True) 
+0

Что такое "текущий идентификатор сайта"? чего вы пытаетесь достичь? – Sayse

+0

@ Идентификатор текущего сайта будет тем сайтом, на который пользователь выполнил вход. Затем пользователь загружает изображение «через» этот сайт, и сайт будет таким текущим идентификатором. Я использую Mezzanine CMS для Django. – l2310p

ответ

2

Вы можете сделать один из 2-х вещей:

  1. Вы можете использовать get_current_site шо rtcut, но для этого потребуется объект request
  2. Вы можете получить объект сайта с settings.SITE_ID - для этого потребуется дополнительный поиск.

Для второго случая, то использование было бы что-то вроде этого:

from django.contrib.sites.models import Site 
from django.conf import settings 

def set_current_site(): 
    return Site.objects.get(pk=settings.SITE_ID) 

и в моделях:

site = models.ForeignKey(Site, default=set_current_site) 
+0

Ошибка при попытке переноса: 'TypeError: int() аргумент должен быть строкой, байтовым объектом или числом, а не« сайтом » – l2310p

+0

, что установлено в' settings.SITE_ID'? – karthikr

+0

Установлен в 1. – l2310p

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