如何在Django中用不同的设置进行单元测试?
是否有任何简单的机制来覆盖Django设置以进行单位测试?我的一个型号上有一个经理,可以返回特定数量的最新对象.它返回的对象数是由num_latest设置定义的. 如果有人更改设置,这有可能使我的测试失败.如何在setUp()上覆盖设置,然后在tearDown()上还原它们?如果不可能,有没有某种方法可以猴子修补方法或模拟设置? 编辑:这是我的经理代码: class LatestManager(models.Manager): """ Returns a specific number of the most recent public Articles as defined by the NEWS_LATEST_MAX setting. """ def get_query_set(self): num_latest = getattr(settings, 'NEWS_NUM_LATEST', 10)
12 2023-10-17
编程技术问答社区
use_for_related_fields在Django中是如何工作的?
我无法从文档中掌握这一点.更具体地说,这是完全不清楚的: 它是全球环境吗?因此,如果我在一个模型管理器上指定此属性,所有模型类都将在全球使用吗? 如果不是全球设置,那么哪些关系将受到哪些关系? 是否可以有一个模型经理用于一种关系,另一个与同一模型的关系有另一个关系? 最重要的是,由于文档缺乏这些afaik,我将不胜感激任何最小的示例用法.谢谢. 解决方案 它是全局设置吗?因此,如果我在一个模型管理器上指定此属性,所有模型类都将在全球使用吗? 如果我理解了您对全球的含义,答案是否定的.仅当默认管理器(类中指定的第一个管理器)设置时,它将仅用于类.您可以在几种模型中重新使用经理,并且该属性只会对这些类别产生默认管理器的影响. 这是我认为一个例子有助于理解的事情.让我们使用以下成员和个人资料模型,并在一对一的关系中链接: from django.db import models class Member(models.Model): na
4 2023-06-30
编程技术问答社区
django管理器的代码应该放在哪里?
这是一个非常简单的django模式问题.我的经理代码通常生活在型号中.是否还有其他替代模式可以让您的管理器代码在型号中生存. 可能会问一个问题:py是如此之大,但让我们假设它的大小和广度是合理的. 解决方案 我更喜欢将我的模型保留在Mander.py和Managers.py中的经理(forms.py)中,全部在同一应用中.对于更多的通用经理,我更喜欢将它们保留在核心中.经理是否可以重新使用其他应用程序.在我们的一些较大的应用程序中,将包含一个管理器和模型代码,看起来不错. 其他解决方案 使用大量型号的最佳选择是使用Django模块来提高您的优势,并只需创建一个名为模型的文件夹即可.将您的旧型号.py移动到此模型文件夹中,然后将其重命名__init__.py.这将使您可以将每个模型分为此模型文件夹中的更具体的文件. . 然后,您只需要将每个模型导入到__init__.py的名称空间中. 因此,例如,您可能需要将其分为: yourapp/ model
6 2023-06-30
编程技术问答社区
Django经理链
我想知道是否有可能(如果是这样)将多个经理链在一起,以产生受两个个人经理影响的查询集.我将解释我正在研究的具体示例: 我有多个抽象模型类,用于为其他模型提供小型,特定的功能.其中两个模型是Deletemixin和GlobalMixin. Deletemixin被定义为: class DeleteMixin(models.Model): deleted = models.BooleanField(default=False) objects = DeleteManager() class Meta: abstract = True def delete(self): self.deleted = True self.save() 基本上,它提供了一个伪删除(已删除的标志),而不是实际删除对象. globalmixin被定义为: class GlobalMixin(model
28 2023-06-30
编程技术问答社区
管理器不能通过模型实例访问
我试图在另一个错误中获取模型对象实例,然后提出此错误: 通过主题实例无法访问管理器 这是我的模型: class forum(models.Model): # Some attributs class topic(models.Model): # Some attributs class post(models.Model): # Some attributs def delete(self): forum = self.topic.forum super(post, self).delete() forum.topic_count = topic.objects.filter(forum = forum).count() 这是我的观点: def test(request, post_id): post = topic.objects.get(id = int(topi
32 2023-06-24
编程技术问答社区
Django ORM-objects.filter() vs. objects.all().filter()-哪一个是首选?
我经常看到 之类的结构 MyModel.objects.all().filter(...) 将返回默认Mananger的QuerySet.首先all()似乎很多余,因为 MyMode.objects.filter(...) 提供相同的结果. 但是,这似乎仅对默认管理器安全,因为Django文档中的以下两个语句: 摘录摘自"添加额外的管理方法"一章 自定义管理器方法可以返回您想要的任何东西.没有 返回QuerySet. all()管理方法的定义: all() 返回当前QuerySet(或QuerySet子类)的副本. 在您可能想传递的情况下,这可能很有用 模型管理器或QuerySet,并在 结果.在两个对象上拨打所有()后,您一定会有一个 QUERYSET可以使用. 这似乎对我有点矛盾.一方面,django提供了让管理方法返回首选的任何对象类型的自由,另一方面,它需要all()方法的QuerySet.我知道每个经理都有get_query
46 2023-06-23
编程技术问答社区
将django的RawQuerySet转换为Queryset
我有2个Django模型,ModelA ArrayField,用于存储大量的主要钥匙值列表(可能是50k+ list) class ModelA(models.Model): pk_values = ArrayField(models.IntegerField()) class CustomManager(manager.Manager): def get_for_index(self, index_id): qs = self.get_queryset() obj = ModelA.objects.get(pk=index_id) return qs.filter(id__in=obj.pk_values) class ModelB(models.Model): # [...] some fields objects = CustomManager() 这有效: qs = Model
148 2023-06-23
编程技术问答社区
AttributeError: 'Manager' object has no attribute 'get_by_natural_key' error in Django?
我正在使用django '1.5c1'.我的设置中有这条线: AUTH_USER_MODEL = 'fileupload.galaxyuser' 这是我的Galaxyuser模型: class GalaxyUser(models.Model): id = models.IntegerField(primary_key=True) create_time = models.DateTimeField(null=True, blank=True) update_time = models.DateTimeField(null=True, blank=True) email = models.CharField(max_length=765) password = models.CharField(max_length=120) external = models.IntegerField(null=True, blank=Tru
22 2023-06-22
编程技术问答社区
Django自定义用户管理器在管理面板中未被调用
我正在使用AbstractBaseuser和baseusermanaer实施自定义用户模型. class UserManager(BaseUserManager): def create_user(self,username,password=None): class User(AbstractBaseUser): ... objects = UserManager() 当我从终端创建新用户时,它正在按预期工作,并且用户使用自定义UserManager进行注册.但是,当使用管理站点时,用户似乎正在使用其他用户管理器,应该在其中使用自定义用户管理器. 用户/admin.py User = get_user_model() class UserAdmin(BaseUserAdmin): ... admin.site.register(User, UserAdmin) 解决方案 最终得到了解决方案.我缺少的是,管理站点中
32 2023-04-17
编程技术问答社区
Django queryset的Model方法包含另一个queryset
假设我有一个模型,MyModel,带有使用另一个模型的QuerySet的属性方法. class OtherModel(models.Model) ... class MyModel(models.Model): simple_attr = models.CharField('Yada yada') @property def complex_attr(self): list_other_model = OtherModel.objects.all() ... # Complex algorithm using queryset from 'OtherModel' and simple_attr return result 这会导致我的get_queryset() MyModel上的方法查询数据库,以每行时每次生成list_other_model变量. 导致我的mymodel
34 2023-04-17
编程技术问答社区
创建一个带参数的django管理器
我有以下情况 我有一个经理类,可以根据字段过滤QuerySet.问题在于,根据类,字段名称是不同的,但是它过滤的价值来自同一位置(所以我认为我不需要几个经理).这就是我到目前为止所做的. class MyManager(models.Manager): def __init__(self, field_name): super(MyManager, self).__init__() self.field_name = field_name def get_queryset(self): # getting some value kwargs = { self.field_name: some_value } return super(MyManager, self).get_queryset().filter(**kwargs) class A: # some datame
26 2023-04-17
编程技术问答社区
Django ORM。连接子查询
我有一个表,其中包含一些网站的列表和一个具有统计信息的表. class Site(models.Model): domain_name = models.CharField( max_length=256, unique=True, ) class Stats(models.Model): date = models.DateField() site = models.ForeignKey('Site') google_pr = models.PositiveIntegerField() class Meta: unique_together = ('site', 'date') 我想查看具体日期的所有站点和统计信息.如果不存在日期的统计记录,则选择必须仅包含站点. 如果我使用: Site.objects.filter(stats__date=my_date)
28 2023-03-04
编程技术问答社区
带有过滤器参数的Django自定义管理器
我想添加一个可以从模板调用的自定义管理器,但不会影响整个模型(例如管理员视图),并且倾听请求中的参数集(user_profile). 以下是我到目前为止所拥有的: models.py: class CurrentQuerySet(models.query.QuerySet): def current(self): return self.filter(id=1) ## this simplified filter test works.. class CurrentManager(models.Manager): use_for_related_fields = True def get_query_set(self): return CurrentQuerySet(self.model) def current(self, *args, **kwargs): ret
18 2022-08-28
编程技术问答社区
管理器不能通过 "模型 "实例访问 django
我与Django及其定制经理遇到了错误.我有这个自定义经理: class CallManager(models.Manager): def get_queryset(self): return super(CallManager, self).get_queryset().filter(is_active=True) class Call(models.Model): ... # Data is_active = models.BooleanField(default=True) # Managers objects = models.Manager() # Default active = CallManager() # Active calls 好吧,所以现在我尝试从views.py(call/views.py) 来检索数据 # Call list def call_l
76 2022-08-27
编程技术问答社区
Django,哪个函数属于QuerySet和Manager?
我曾经认为QuerySet方法返回QuerySet实例,但显然不是. 例如,count()是一个querySet方法,而不是管理器的 我如何确定哪些函数转到自定义QuerySet,哪个转到自定义管理器类? ? 解决方案 能够访问Manager 和QuerySet上的count()之类的某些功能是有意义的.这使您可以这样做: Blog.objects.count() # total number of blogs Blog.objects.filter(status='PUBLISHED').count() # Number of published blogs django有一种方法 as_manager 允许您从自定义QuerySet创建经理.这意味着您不必在经理和QuerySet上复制您的方法.
30 2022-08-27
编程技术问答社区
带有反向外键的select_related
我在django中有两个型号.第一个具有层次结构的层次结构(职位)报告了其他职位,第二个是人员和他们拥有的工作职能. class PositionHierarchy(model.Model): pcn = models.CharField(max_length=50) title = models.CharField(max_length=100) level = models.CharField(max_length=25) report_to = models.ForeignKey('PositionHierachy', null=True) class Person(model.Model): first_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) ... position = model
22 2022-08-27
编程技术问答社区
自定义查询集和管理器而不破坏DRY?
我正在尝试找到一种实现自定义QuerySet和自定义Manager的方法,而不会破坏.这就是我到目前为止所拥有的: class MyInquiryManager(models.Manager): def for_user(self, user): return self.get_query_set().filter( Q(assigned_to_user=user) | Q(assigned_to_group__in=user.groups.all()) ) class Inquiry(models.Model): ts = models.DateTimeField(auto_now_add=True) status = models.ForeignKey(InquiryStatus) assigned_to_use
34 2022-08-27
编程技术问答社区
如何使用相关对象的自定义管理器?
我有一个自定义经理.我想将其用于相关对象.我找到了 in Docs in Docss in Docss use_for_releded_fields 文档.但是它无法按照我的使用方式工作: class RandomQueryset(models.query.QuerySet): def randomize(self): count = self.count() random_index = random.randint(0, count - 1) return self.all()[random_index] class RandomManager(models.Manager): use_for_related_fields = True def get_query_set(self): return RandomQueryset(self.model, using=s
14 2022-08-27
编程技术问答社区
自定义模型管理器方法和QuerySet方法之间有什么区别?
我试图让我的脑袋写作定制经理.我发现在线文档有点稀疏.用代码在自己周围玩弄时,我发现了以下模式: 给定以下模型... class QuestionQuerySet(models.QuerySet): def QS_first (self): return self.first() class QuestionManager(models.Manager): def get_queryset(self): return QuestionQuerySet(self.model, using=self._db) def MN_first(self): return self.get_queryset().first() class Question(models.Model): front = models.ForeignKey('Sentence', related_name='questio
34 2022-08-27
编程技术问答社区
用自定义用户模型创建的Django-用户会导致内部错误
好吧,我知道这是一个愚蠢的问题,但我被阻止了,我不知道该怎么办. 我已经在Google和Stackoverflow上进行了搜索,但没有找到任何答案: 我尝试了: 向Django中的用户添加自定义字段 django-在用户创建上创建用户配置文件 https:https://docs://docs. djangoproject.com/en/dev/topics/auth/#storing-additional-information-enformation-about-users 我的模型如下: class UserProfile(models.Model): user = models.OneToOneField(User) quota = models.IntegerField(null = True) def create_user_profile(sender, instance, created, **kwargs): i
20 2022-08-27
编程技术问答社区