我目前正在使用Django框架,包括它的模型机制来抽象数据库模式声明和一般数据库访问,这在大多数情况下都可以正常工作。但是,我的应用程序还需要在运行时动态创建和访问表,据我所知,Django不支持开箱即用。这些表通常具有相同的结构,并且基本上可以由同一个模型类抽象,但Django不允许您更改某个模型查询的底层db_table,因为它是在模型类上声明的,而不是在管理器上声明的。我的解决方案是每当我需要创建、填充和访问新表时执行此过程:使用原始sql创建并填充表使用原始sql为表添加索引当我需要访问表(使用djangoquerysetapi)时,我动态声明一个新类型并将其作为查询模型返回,
多亏了django调试工具栏,我注意到每个django管理列表页面总是在我的所有查询中添加一个“ORDERBYidDESC”,即使我手动覆盖admin.ModelAdmin的get_queryset方法(我通常这样做是因为我想在我的一些管理页面上进行自定义排序)我想这其实没什么好担心的,但这是数据库需要做的额外排序操作,即使它根本没有意义。有什么办法可以避免这种情况吗?似乎在某些模型上(甚至不是所有模型)如果我添加订购元数据,那么它不会自动按ID添加订单,但它会按该字段添加,这也是我不知道的'想要,因为这样做会将该orderby添加到代码中的所有其他查询中。编辑:似乎罪魁祸首在Chan
在我的django应用程序(django1.8)中,我使用了两个数据库,一个是“default”,它是MySQL,另一个是无模式的只读数据库。我有两个正在访问该数据库的模型,我想从数据和模式迁移中永久排除这两个模型:makemigrations不应该检测任何更改,并为它们创建迁移migrate不应该提示该应用程序缺少迁移到目前为止,我尝试了不同的方法,但都没有成功:在两个模型上都使用了managed=False元选项向我的路由器添加了一个allow_migrate方法,它为两个模型返回False有没有人举例说明如何实现这种情况?感谢您的帮助! 最佳答案
使用django-cacheops,我想测试我的View是否按照我的预期进行了缓存。在我的测试用例中,我将cacheopscache_read信号连接到一个处理程序,该处理程序应该为命中或未命中增加缓存中的值。但是,信号永远不会被触发。有谁知道在测试用例中连接django信号处理程序的正确方法,纯粹用于该测试用例?这是我目前所拥有的fromcacheops.signalsimportcache_readcache.set('test_cache_hits',0)cache.set('test_cache_misses',0)defcache_log(sender,func,hit,**
我有一个Django应用程序,我希望能够在多个实例中使用它。一个模型(Listing)可以有可变数量的字段(针对不同的实例),但是对于实例总是会有那些额外的字段。我想通过管理员添加这些额外的字段,所以我创建了这样的模型:classBespokeField(models.Model):name=models.CharField(max_length=20,verbose_name="FieldTitle")def__unicode__(self):returnself.nameclassListing(models.Model):name=models.CharField(verbose
我正在使用djangoappengine。当我尝试创建新用户、对该用户进行身份验证并让他们登录时,出现以下错误AttributeError:'AnonymousUser'objecthasnoattribute'backend'。我的代码很简单,看起来像:user=User.objects.create_user(username,username,password)user.set_password(password)user.save()user=django.contrib.auth.authenticate(username=username,password=password
如何确保至少设置了一个多对多关系?例如:如果我有一个listing模型,它有一个image字段,与images存在多对多关系。如何保证至少设置一张图片奖励问题:如果最小值不是1怎么办?最大值呢? 最佳答案 您可以实现一个函数来检查Listing实例是否至少有一个图像实例,并将该函数连接到Listing模型的pre_savesignal。它会是这样的,(假设你使用的是django1.3)fromdjango.db.models.signalsimportpre_savefromdjango.dispatchimportreceiver
我正在寻找一个库以在Django的OpenID服务器上实现。也就是说,我有自己的用户数据库,需要成为自己的OpenID提供者。我不需要像我找到的所有Django库一样使用OpenID。有什么好的库可用吗?我找到的一个图书馆是https://bitbucket.org/romke/django_openid_provider/,但是已经一年没有动过了。状态好吗? 最佳答案 就其值(value)而言,我在生产中使用了django_openid_provider(v.0.4),它的性能非常好。我根据个人喜好在这里和那里做了一些调整,但是,
我有如下多表继承情况:fromdjango.dbimportModelsclassPartner(models.Model):#thismodelcontainscommondataforcompaniesandpersonscode=models.CharField()name=models.CharField()classPerson(Partner):#someperson-specificdatassn=models.CharField()classCompany(Partner):#somecompany-specificdatatax_no=models.CharField
这里有两个示例Django模型。特别注意has_pet方法。classPerson(models.Model):name=models.CharField(max_length=255)defhas_pet(self):returnbool(self.pets.all().only('id'))classPet(models.Model):name=models.CharField(max_length=255)owner=models.ForeignKey(Person,blank=True,null=True,related_name="pets")这里的问题是has_pet方法总