如何使用Sites Framework将当前站点用作Django表单中的默认值?

时间:2017-09-19 20:12:44

标签: django django-sites

我正在使用Sites Framework,并希望将当前网站保存为我的某个模型的默认site值。

型号:

class MyModel(models.Model):
    site = models.ForeignKey(
        Site, 
        on_delete=models.CASCADE, 
        default=Site.objects.get_current())  # THIS IS WHAT I WANT TO DO (DOESN'T WORK)
    ...other fields...

有没有办法在保存Site实例的任何时候自动将当前site对象保存为MyModel MyModel属性?或者我是否需要通过覆盖表单或模型的save方法(或类似的覆盖)来手动执行此操作?

1 个答案:

答案 0 :(得分:1)

您可以设置默认网站。

<强> models.py

def get_current_site():
    return Site.objects.get_current().id


class MyModel(models.Model):
    site = models.ForeignKey(
        Site,
        on_delete=models.CASCADE,
        default=get_current_site)

仅当您在数据库中创建了网站并在SITE_ID

中设置了settings.py时,此功能才有效