小编sch*_*ick的帖子

在Django Admin中过滤ManyToMany框

我有一个与另一个对象有多对多关系的对象.
在Django Admin中,这会在多个选择框中生成一个很长的列表.

我想过滤ManyToMany关系,因此我只获取客户选择的City中可用的类别.

这可能吗?我是否必须为它创建一个小部件?如果是这样 - 我如何将行为从标准的ManyToMany字段复制到它,因为我也想要filter_horizo​​ntal函数.

这些是我的简化模型:

class City(models.Model):
    name = models.CharField(max_length=200)


class Category(models.Model):
    name = models.CharField(max_length=200)
    available_in = models.ManyToManyField(City)


class Customer(models.Model):
    name = models.CharField(max_length=200)
    city = models.ForeignKey(City)
    categories = models.ManyToManyField(Category)
Run Code Online (Sandbox Code Playgroud)

django many-to-many django-forms django-admin django-widget

34
推荐指数
3
解决办法
3万
查看次数

为Django设置TDD的正确测试


我一直无视长期测试我的项目的必要性.

所以我花了一天多的时间寻找方法来为我当前的应用程序实现测试,并试图让一些TDD用于新的应用程序.

我找到了许多"教程",其中包含以下步骤:"1.安装此2.安装3.安装此4.完成!"
但似乎没有人谈论如何构建测试,包括文件和代码.

并且没有人讨论如何设置CI服务器,或者只是将测试与项目的部署集成在一起.
很多人都提到了面料,艺术品和鼻子 - 但没有人描述他们如何与他们一起工作.

我一直在寻找的是有关如何使用测试和CI等设置正确的Rails环境的详细信息......

有没有人觉得Django社区缺乏这个领域,还是仅仅是我?:)

哦,还有其他人有任何关于如何做的建议吗?

testing django tdd bdd continuous-integration

14
推荐指数
3
解决办法
1836
查看次数

为什么Django post_save信号给我pre_save数据?

我试图将"信息"对象连接到许多"客户"(参见下面的代码)

当一个Information对象更新时,我想向连接到Information的每个Customer发送电子邮件.

但是,当我记录信号收到的sold_to字段时,我总是得到保存之前的数据.

我猜这是因为它的ManyToManyField和数据存储在一个单独的表中,但是在更新所有关系之后不应该调用post_save信号吗?

有人建议解决方案吗?

class Customer
    name = models.CharField(max_length=200)
    category = models.ManyToManyField('Category',symmetrical=False)
    contact = models.EmailField()

class Information
    name = models.CharField(max_length=200)
    email = models.EmailField(max_length=200)
    mod_date = models.DateTimeField(auto_now=True)
    sold_to = models.ManyToManyField(Customer, null=True, blank=True)


def send_admin_email(sender, instance, signal, *args, **kwargs):
    from myapp import settings
    for cust in instance.sold_to.all():
        settings.debug(cust.name)

post_save.connect(send_admin_email, sender=Information)
Run Code Online (Sandbox Code Playgroud)

编辑:#django中的apollo13提醒我:"相关项目(被保存为多对多关系的东西)不会像你发现的那样保存为模型的保存方法的一部分." - http://groups.google.com/group/django-users/msg/2b734c153537f970

但自2006年7月9日起,我真的希望有一个解决方案.

python django django-signals

9
推荐指数
1
解决办法
4468
查看次数

Django中的并发性能(apache2 prefork/mod_wsgi),我做错了什么?

首先,我对Django支持的网站的性能没有任何不满,它没有获得大量流量,到目前为止每天访问量超过1000次.

我很好奇它能够应对繁忙的交通高峰,所以我用ab工具做了一些基准测试.

我注意到并发大于1时的性能提供了与1个并发连接相同的大量请求.

reqs/s不应该随着并发性而增加吗?

我在一台具有1 GB RAM,apache2(prefork),mod_wsgi,memcached和mysql的虚拟机上.
页面上的所有内容都已缓存,数据库不会受到任何点击.如果memcached将丢弃该条目,则只有2个轻(索引)查询 - 并且应立即重新缓存.

基准测试数据:(注意:我用2000和10k请求对其进行基准测试,结果相同)

首页,由django通过apache2/mod_wsgi提供:
-n100 -c4:http://dpaste.com/97999/ (58.2
reqs/s)-n100 -c1:http://dpaste.com/97998/ (57.7请求数/秒)

对于robots.txt,直接来自apache2:
-n100 -c4:http://dpaste.com/97992/ (4917
reqs/s)-n100 -c1:http://dpaste.com/97991/ (1412 reqs/s )

这是我的apache conf:http://dpaste.com/97995/

编辑:添加了更多信息

wsgi.conf:http://dpaste.com/98461/

mysite.conf:http://dpaste.com/98462/

我的wsgi-handler:

import os, sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)

django concurrency performance mod-wsgi apache2

6
推荐指数
1
解决办法
5337
查看次数

在Django ModelForm方面需要帮助:如何过滤ForeignKey/ManyToManyField?

好吧,我很难解释这一点,请告诉我是否应该向您介绍更多细节.

我的网址如下所示:http://domain.com/<category >/
Each <category>可能有一个或多个子类别.

我希望类别页面具有包含类别子类别的选择框(以及其他字段)的表单.我目前在其中一个模板中对表单进行了硬编码,但我想让它直接反映模型.

在我目前的硬编码解决方案中,我在我的类别视图中:

s = Category.objects.filter(parents__exact=c.id)  
Run Code Online (Sandbox Code Playgroud)

表单模板迭代并打印出选择框(请参阅下面的模型代码)

我猜我想要一个带有init的ModelFormSet 来过滤掉类别,但我似乎无法在文档中找到如何做到这一点.

一直在看如何在Django ModelForm中过滤ForeignKey选项?同样,但我不能让它正常工作.

我的模特

# The model that the Form should implement
class Incoming(models.Model):
    cat_id = models.ForeignKey(Category)
    zipcode = models.PositiveIntegerField()
    name = models.CharField(max_length=200)
    email = models.EmailField()
    telephone = models.CharField(max_length=18)
    submit_date = models.DateTimeField(auto_now_add=True)
    approved = models.BooleanField(default=False)

# The categories, each category can have none or many parent categories
class Category(models.Model):
    name = models.CharField(max_length=200, db_index=True)
    slug = models.SlugField()
    parents = models.ManyToManyField('self',symmetrical=False, …
Run Code Online (Sandbox Code Playgroud)

django django-models django-forms

5
推荐指数
2
解决办法
3912
查看次数