在Django中使用模型时获取当前的site_id

时间:2016-07-14 13:59:09

标签: django

使用Django,我可以像这样使用user = models.OneToOneField('auth.User') 创建一个关系:

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)

如何制作一个模型(如下所示),在尝试上传图片时会获得当前的site_id:

set a to (do shell script "ls")

1 个答案:

答案 0 :(得分:3)

您可以执行以下两项操作之一:

  1. 您可以使用get_current_site快捷方式,但这需要request对象
  2. 您可以从settings.SITE_ID获取Site对象 - 但这需要额外的查找。
  3. 对于第二种情况,使用方式如下:

    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)