在Django中使用模型时获取当前站点id

在Django中使用模型时获取当前站点id,django,Django,有了Django,我可以像这样使用OneToOneField来创建关系: user = models.OneToOneField('auth.User') 我如何制作一个模型(以下示例),在尝试上载图像时获得当前站点的id: class Image(models.Model): site = # something here user = models.OneToOneField('auth.User') image = models.ImageField(upload

有了Django,我可以像这样使用
OneToOneField
来创建关系:

user = models.OneToOneField('auth.User')
我如何制作一个模型(以下示例),在尝试上载图像时获得当前站点的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)

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

  • 您可以使用
    获取当前站点
    快捷方式,但这需要
    请求
    对象
  • 您可以从
    设置中获取站点对象。站点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)
    

    什么是“当前站点id”?你想达到什么目的?@Sayse当前站点id将是用户登录的站点。然后,用户“通过”该站点上载图像,该站点将是当前id。我使用Django的夹层CMS。我在尝试迁移时遇到错误:
    TypeError:int()参数必须是字符串、类似对象的字节或数字,而不是“site”
    什么是
    设置。site\u id
    设置为?