小编okm*_*okm的帖子

在TextField上使用URLField的优点是什么?

据我所知,TextField当你使用PostgreSQL数据库时,你应该总是使用一个变长字符串,因为a TextField和a 之间的速度差异CharField可以忽略不计PostgreSQL.我是Django的新手,并且正在考虑TextField在我的数据库中使用一个可变长度的URL.我想知道使用它是否有任何好处URLField?使用TextField而不是URLField网址会被视为不良形式吗?

django postgresql url performance django-models

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

Django"记住我",内置登录视图和身份验证表单

我怎样才能重新使用原来的管理员登录()和AuthenticationForm设置较长的Cookie有效期与"记住我"选项,在登录页面检查用户?我目前正在通过urls.py使用内置登录

url(r'^login/$','django.contrib.auth.views.login', {'template_name': 'authentication/login.html'}, name='login'),
Run Code Online (Sandbox Code Playgroud)

该复选框在我的login.html中实现为:

<label><input name="remember_me" type="checkbox">Keep me logged in</label>
Run Code Online (Sandbox Code Playgroud)

但我不知道如何通过AuthenticationForm传递信息给django.contrib.auth.views.login

目前,如果用户未选中"记住我"框,则会在settings.py中定义cookie年龄

SESSION_COOKIE_AGE = 360
Run Code Online (Sandbox Code Playgroud)

我发现了几个类似的问题,但我认为这不需要安装单独的应用程序.下面的代码片段(http://djangosnippets.org/snippets/1881/)看起来很有希望,但我只编写了几个月的python和Django,但是我无法让它工作:

def login(request, *args, **kwargs):
    if request.method == 'POST':
        if not request.POST.get('remember_me', None):
            request.session.set_expiry(0)
    return auth_views.login(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

django checkbox login remember-me

37
推荐指数
1
解决办法
2万
查看次数

使用django 1.4执行syncdb时出现"settings.DATABASES配置不正确"错误

我创建了一个简单的django 1.4项目,并尝试发出syncdb来创建(postgres)数据库模式.我收到这个错误: -

Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 196, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 232, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 371, in handle
return self.handle_noargs(**options)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/commands/syncdb.py", line 57, in handle_noargs
cursor = connection.cursor()
File "/usr/local/lib/python2.6/dist-packages/django/db/backends/dummy/base.py", line 15, in complain
raise ImproperlyConfigured("settings.DATABASES is improperly configured. "
django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly …
Run Code Online (Sandbox Code Playgroud)

django django-models django-admin

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

django使用through =和filter_horizo​​ntal管理多对多中介模型

这就是我的模型的样子:

class QuestionTagM2M(models.Model):
    tag = models.ForeignKey('Tag')
    question = models.ForeignKey('Question')
    date_added = models.DateTimeField(auto_now_add=True)

class Tag(models.Model):
    description = models.CharField(max_length=100, unique=True)

class Question(models.Model):
    tags = models.ManyToManyField(Tag, through=QuestionTagM2M, related_name='questions')
Run Code Online (Sandbox Code Playgroud)

我真正想做的就是在创建给定的多人关系时添加时间戳.这很有意义,但它也增加了一些复杂性.除了删除.add()功能之外[尽管事实上我真正添加的唯一字段是自动创建的,所以它在技术上不应该再干扰它了].但我可以忍受这一点,因为我不介意做额外的事情,QuestionTagM2M.objects.create(question=,tag=)如果这意味着获得额外的时间戳功能.我的问题是我真的很想能够filter_horizontal在管理员中保存我的javascript小部件.我知道文档说我可以用内联代替,但因为没有其他字段实际上是内联除了外键,这是太笨重Tag反正.此外,在我的数据库模式的更大方案中,我的Question对象已经在我的管理页面上显示为内联,并且由于Django不支持admin [yet]中的嵌套内联,我无法为给定的选择标记题.有没有办法覆盖formfield_for_manytomany(self, db_field, request=None, **kwargs)或类似的东西允许我使用漂亮的filter_horizontal小部件和自动创建date_added列到数据库?这似乎是django应该能够本地执行的东西,只要您指定中间的所有列都是自动创建的(除外键之外)可能与auto_created=True?或类似的东西

django django-models django-admin

17
推荐指数
1
解决办法
8639
查看次数

django生产的数据库迁移

对于在非平凡的生产环境中拥有django应用程序的人,您如何处理数据库迁移?我知道有south,但如果涉及任何实质性的事情,似乎会错过很多.

另外两个选项(我能想到或已经使用过)是在测试数据库上进行更改,然后(使用应用程序脱机)并导入该sql导出.或者,也许是一个风险更高的选择,实时对生产数据库进行必要的更改,如果出现任何问题,还原为备份.

您通常如何处理数据库迁移和架构更改?

python mysql migration django django-south

17
推荐指数
1
解决办法
7684
查看次数

将字符串列表转换为整数列表

如何将空格分隔的整数输入转换为整数列表?

输入示例:

list1 = list(input("Enter the unfriendly numbers: "))
Run Code Online (Sandbox Code Playgroud)

转换示例:

['1', '2', '3', '4', '5']  to  [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

python integer input list

13
推荐指数
2
解决办法
6万
查看次数

Django:Formset作为表单字段

我需要的其中一种形式是简单字段(比如"Department","Building"和"RoomNumber")的组合,以及动态生成的字段对(比如"Name"和"Email").理想情况下,编辑简单字段的内容以及添加/删除动态字段对将在单个表单上完成.

代码方面,我想知道是否尝试将Formset(具有两个动态字段的表单)作为普通形式的字段嵌入是一种明智的方法,或者是否有另一种最佳实践来实现我想要实现的目标.

非常感谢有关这些问题的任何建议,

django dynamic django-forms

12
推荐指数
1
解决办法
6529
查看次数

Django限制ManytoMany基于选定的FK的查询集

我有一个看起来像这样的模型:

class Invite(models.Model):
    user = models.ForeignKey(User)
    event = models.ForeignKey(Event)
    roles = models.ManyToManyField(Role, blank=True, null=True)
    sent =  models.BooleanField("Invite Sent", default=False, editable=False)
    created = models.DateTimeField(auto_now_add=True)

    def __unicode__(self):
        return u"%s" % self.user

    class Meta:
        unique_together =(('user','event'),)


class Role(models.Model):
    """
    This associates a user's role to an event
    """
    event = models.ForeignKey(Event, related_name="roles")
    roletype = models.ForeignKey(RoleType)
    profiles = models.ManyToManyField(Profile, related_name="roles",
            blank=True, null=True)
    modified = models.DateTimeField(auto_now=True)
    created = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

因此,无论何时创建新事件,都会创建一堆角色.在Invite模型中,我如何只显示与我在Django Admin中的更改表单中选择的事件相关联的角色,而不是显示Role模型中的所有条目?

django django-admin

11
推荐指数
2
解决办法
3019
查看次数

django管理员搜索多个单词

我使用的烦恼search_fields,当搜索表达式中有多个单词,我想执行startswith搜索

我上课了

class Foo(models.Model):
  kw = models.CharField(max_length = 255)
  ...

class FooAdmin(admin.ModelAdmin):
  search_fields = ('^kw',)
Run Code Online (Sandbox Code Playgroud)

'^'表明我要执行startswith搜索.如果我正在寻找kw'foo fuu',django将执行查询:

select * from app_foo where `foo`.`kw` like 'foo%' and `foo`.`kw` like 'fuu%' 
Run Code Online (Sandbox Code Playgroud)

此查询显然没有结果.我该怎么做才能让引擎找到'foo fuu%'

python django django-admin

8
推荐指数
1
解决办法
2995
查看次数

子类化Django UpdateCacheMiddleware和FetchFromCacheMiddleware的技术

我已经使用UpdateCacheMiddlewareFetchFromCacheMiddlewareMiddleWare来实现站点范围的匿名缓存,以获得不同程度的成功.

最大的问题是中间件只缓存匿名用户的第一个请求.由于在第一个响应上设置了session_id cookie,因此匿名用户的后续请求不会因为Headers上的视图级缓存变化而到达缓存.

我的网页在匿名用户中没有显着差异,并且只要它们有所不同,我可以通过Ajax处理.结果,我决定尝试将Django的缓存中间件子类化为不再改变Header.相反,它在Anonymous vs. LoggedIn Users上有所不同.因为我正在使用Auth后端,并且该处理程序在从缓存中获取之前发生,所以它似乎有效.

class AnonymousUpdateCacheMiddleware(UpdateCacheMiddleware):

    def process_response(self, request, response):
        """
        Sets the cache, if needed.
        We are overriding it in order to change the behavior of learn_cache_key().
        """

        if not self._should_update_cache(request, response):
            # We don't need to update the cache, just return.
            return response
        if not response.status_code == 200:
            return response

        timeout = get_max_age(response)
        if timeout == None:
            timeout = self.cache_timeout
        elif timeout == 0:
            # max-age was set to 0, don't …
Run Code Online (Sandbox Code Playgroud)

django caching middleware django-views

7
推荐指数
1
解决办法
601
查看次数