0

我正在尝试这样做:

from django.db import models
from django.db.models.query import QuerySet

class QuerySetManager(models.Manager):

    def get_query_set(self):
        return self.model.QuerySet(self.model)

    def __getattr__(self, attr, *args):
        return getattr(self.get_query_set(), attr, *args)


    # like get_or_create without save
    def get_or_new(self, defaults=None, **kwargs):
        lookup, params = self.get_query_set()._extract_model_params(defaults, **kwargs)
        try:
            return self.get(**lookup), False
        except self.model.DoesNotExist:
            obj = self.model(**params)
            return obj, True

一个示例模型:

class Person(models.Model):
    # fields...
    objects = QuerySetManager()

    class QuerySet(QuerySet):
        # custom filter methods
        pass

我想使用_extract_model_params来获取lookupparamsdict,就像方法中使用的那样get_or_create

问题是self.get_query_set(),即使是一个QuerySet类,也没有那个方法。

为什么?

4

1 回答 1

1

你使用的是什么版本的 Django?该方法似乎在 1.5 甚至 1.6 beta 中都不存在。

于 2013-09-19T19:22:14.110 回答