如何使用站点框架将当前站点用作 Django 表单中的默认站点?

How can I use the current Site as the default in a Django form using the 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...

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

您可以设置默认站点。

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)

仅当您在数据库中创建了一个站点并且还在 settings.py

中设置了 SITE_ID 时,这才有效