【问题标题】:Django in Queryset.create() method, what is 'self._for_write' for?Queryset.create() 方法中的 Django,'self._for_write' 是干什么用的?
【发布时间】:2018-05-10 00:24:25
【问题描述】:

在下面这段代码中,代码self._for_write是什么意思?

def create(self, **kwargs):
    """
    Create a new object with the given kwargs, saving it to the database
    and returning the created object.
    """
    obj = self.model(**kwargs)
    self._for_write = True
    obj.save(force_insert=True, using=self.db)
    return obj

【问题讨论】:

  • 它正在使用 QuerySet 类的未记录属性。见this question

标签: python django


【解决方案1】:

基于django.db.models.query.QuerySet.db

@property
def db(self):
    """Return the database used if this query is executed now."""
    if self._for_write:
        return self._db or router.db_for_write(self.model, **self._hints)
    return self._db or router.db_for_read(self.model, **self._hints)

这意味着当您的QuerySet 具有self._for_write == True 时,它将使用db_for_write 触发您的查询。更多详情请阅读Django document db_for_write

【讨论】:

    猜你喜欢
    • 2019-12-06
    • 1970-01-01
    • 2013-01-12
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 2020-05-14
    相关资源
    最近更新 更多