小编use*_*018的帖子

Django 1.8:为现有模式创建初始迁移

我启动了一个使用迁移系统的django 1.8项目.
在某种程度上事情变得混乱,所以我从数据库中删除了迁移文件夹和表,现在我正在尝试重建它们,但没有成功.

我有三个应用程序(3个models.py文件),模型完全反映了表格!

到目前为止我发现的最佳方法是:

  1. 删除所有migrations文件夹.完成!
  2. django_migrations表中删除所有内容.完成!
  3. python manage.py makemigrations --empty <app>为每个应用运行.完成!
  4. python manage.py migrate --fake.完成!(虽然只有在每次makemigrations命令后运行它才有效.

现在我添加一个新字段,运行该makemigrations命令,我收到以下错误:
django.db.utils.OperationalError: (1054, "Unknown column 'accounts_plan.max_item_size' in 'field list'")

我一直在烧这个东西.我怎样才能初始化迁移,这样我每次都可以继续工作而不会发生迁移中断?

为什么这么复杂?为什么没有简单的单行:initiate_migrations_from_schema

编辑:
现在事情变得更加糟糕.我截断了django_migrations表并删除了所有migrations文件夹.
现在我尝试运行python manage.py migrate --fake-initial(我在DEV文档中找到的东西),这样就设置了所有Django的"内部"应用程序(auth,session等),我得到了:
(1054, "Unknown column 'name' in 'django_content_type'").
现在,这个"专栏"不是一个真正的专栏.它是@propertyDjango contenttypes应用程序中定义的.这里发生了什么?为什么将该name属性识别为真正的列?

django django-migrations

72
推荐指数
1
解决办法
5万
查看次数

芹菜 - 如何从远程机器发送任务?

我们有一台运行芹菜工作者的服务器和一个Redis队列.任务在该服务器上定义.
我需要能够从远程计算机调用这些任务.
我知道它已经完成,send_task但我仍然没有弄清楚怎么办?如何判断send_task队列在哪里?我在哪里通过连接参数(或任何需要的)?我一直在找几个小时,我能找到的就是这个:

from celery.execute import send_task
send_task('tasks.add')
Run Code Online (Sandbox Code Playgroud)

嗯,这意味着我也需要celery在我的呼叫机器上.但我还需要设置什么呢?

python celery

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

这个deque是否在python中是线程安全的?

我无法确定以下双端队列是否是线程安全的.
简而言之,我创建了一个带有双端队列的类,它在新线程中每1秒显示一次其内容(因此在打印时不会暂停主程序).
deque是从主线程填充的,所以基本上应该有碰撞的机会.
但是,使用类方法填充deque,因此实际上它是从实例本身访问的,因此来自同一个线程.
这是简化的代码:

import threading
import time
from collections import deque

class MyQueue(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.q = deque()
        self.start()

    def run(self):
        # pop out queue items every 1 sec
        # (please ignore empty deque for now)
        while True:
            print self.q.popleft()
            time.sleep(1)

    def add_to_q(self, val):
        # this function is called from outside
        self.q.append(val)

# main
# fill the queue with values
qu = MyQueue()
for i in range(1:100):
    qu.add_to_q(i)
Run Code Online (Sandbox Code Playgroud)

因此,虽然在实例中添加和删除队列中的项目,但是由于从实例外部调用添加函数,是否存在风险?

编辑:
因为我需要修改我的双端队列中的项目,所以我不得不使用Deque.我所做的是:roatate()到给定的项目,弹出它,修改,推回它并旋转()它回到它原来的位置.
除非我找到一种在队列中实现修改项目的方法,否则我将不得不坚持使用Deque

python thread-safety deque

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

Django如何在自定义表单的子类中重写clean()方法?

我创建了一个自定义表单,如下所示:

class MyCustomForm(forms.Form):
    # ... form fields here

    def clean(self):
        cleaned_data = self.cleaned_data
        # ... do some cross-fields validation here

        return cleaned_data
Run Code Online (Sandbox Code Playgroud)

现在,这个表单被子类化为另一个具有自己的清洁方法的表单.
触发clean()方法的正确方法是什么?
目前,这就是我所做的:

class SubClassForm(MyCustomForm):
    # ... additional form fields here

    def clean(self):
        cleaned_data = self.cleaned_data
        # ... do some cross-fields validation for the subclass here

        # Then call the clean() method of the super  class
        super(SubClassForm, self).clean()

        # Finally, return the cleaned_data
        return cleaned_data
Run Code Online (Sandbox Code Playgroud)

它似乎工作.但是,这会使两个clean()方法返回cleaned_data,这在我看来有点奇怪.
这是正确的方法吗?

django django-forms

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

Django - 如何显示保存在ImageField中的照片?

我已经在这里玩了好几个小时了.
我有一个带有profile_pic ImageField 的UserProfile模型.我保存了用户照片,现在我想显示它,但没有任何效果.我浏览了文档,所以,谷歌,没有结果.
我上传了一张照片,我可以看到该网址已保存在数据库中.这就是我所拥有的:

# models.py
    class UserProfile(models.Model):
        ...
        title       = models.CharField()
        about_me    = models.CharField()
        profile_pic = models.ImageField(upload_to=content_file_name, blank=True)

# views.py
    def user_details(request):
        if request.method == 'POST':
            form = UserProfileForm(request.POST, request.FILES, instance=request.user.get_profile())
            if form.is_valid():
                form.save()
                return HttpResponseRedirect('/')
        else:
            form = UserProfileForm(instance=request.user.get_profile())
        return render_to_response('user_details.html',
                {'user': request.user, 'form': form},
                context_instance=RequestContext(request))

# user_details.html
    {% for field in form %}
      {% if field.name != "profile_pic" %}
        <!-- display regular fields -->
        {{ field.label_tag }}{{ field }}
      {% else %}
        <!-- display the …
Run Code Online (Sandbox Code Playgroud)

django imagefield

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

找到包含点的最小范围的最有效算法/数据结构是什么?

给定数百万个价格范围的数据集,我们需要找到包含给定价格的最小范围.
以下规则适用:

  • 范围可以完全嵌套(即1-10和5-10有效)
  • 范围不能部分嵌套(即1-10和5-15无效)

示例:
给出以下价格范围:

  • 1-100
  • 50-100
  • 100-120
  • 5-10
  • 5-20

搜索价格7 的结果应该是5-10
搜索价格100的结果应该是100-120(最小范围包含100).

实现这一目标的最有效的算法/数据结构是什么?
在网上搜索,我只找到了搜索范围内范围的解决方案.
我一直在关注莫顿计数和希尔伯特曲线,但无法解决如何在这种情况下使用它们.
谢谢.

algorithm hilbert-curve

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

如何在Django中执行DB按位查询?

如何使用Django对DB执行按位查询?
我在文档中没有找到任何关于它的内容.
我应该检索一个查询集,然后以编程方式过滤吗?

如果您感兴趣,我会在非常大且复杂的查询中使用按位运算作为IN()语句的替代,以提高性能.
我有一个包含数百万项(记录)的数据库.某些字段使用项属性的二进制表示.
例如:Color字段可以有多个值,因此结构如下:

0001 - Red
0010 - Green
0100 - Blue
1000 - White
Run Code Online (Sandbox Code Playgroud)

(这些是二进制值)
因此,如果项目具有红色和蓝色,则" 颜色"字段将包含0101.
当用户查询数据库时,我使用按位或来查找匹配(而不是非常慢的IN()).

django bit-manipulation

7
推荐指数
4
解决办法
4719
查看次数

Python Regex - 识别列表中的第一个和最后一个项目

我需要将一些文本文件转换为HTML代码.我坚持将列表转换为HTML无序列表.示例来源:

文档中的一些文本
*项目1
*项目2
*项目3
其他一些文本

输出应该是:

some text in the document
<ul>
    <li>item 1</li>
    <li>item 2</li>
    <li>item 3</li>
</ul>
some other text
Run Code Online (Sandbox Code Playgroud)

目前,我有这个:

r = re.compile(r'\*(.*)\n')
r.sub('<li>\1</li>', the_text_document)
Run Code Online (Sandbox Code Playgroud)

这会创建一个没有< ul >标签的HTML列表.
如何识别第一个和最后一个项目并用< ul >标签包围它们?

python regex

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

Python - 链接方法:返回`self` vs返回一个新的克隆对象

由于我正在进行的项目中的一些限制,我不得不用自定义的替换Django的QuerySet类.QuerySet对象可以将它们的方法链接起来(例如QuerySet().filter(...).exclude(...),依此类推),因此在我的实现中,每个方法都只返回self.所以我的班级看起来像这样:

class MyQuerySet:
    ...
    def filter(self, *args, **kwargs):
        # Do some stuff and then:
        return self
Run Code Online (Sandbox Code Playgroud)

这样我就模仿了Django的QuerySet行为.

但是,看看Django代码,我注意到self,QuerySet的方法不是返回,而是在每次调用时返回克隆对象.它看起来像这样(删除不必要的东西):

class QuerySet(...):
    ...
    def filter(self, *args, **kwargs):
        clone = self._clone()
        # Do some stuff and then
        return clone

    def _clone(self,...):
        klass = self.__class__
        obj = klass(...)
        return obj
Run Code Online (Sandbox Code Playgroud)

所以基本上,每次调用一个方法时,QuerySet都会克隆自己,实例化一个新对象并返回它.

我的问题是:为什么?我错了吗?
我担心的是我这样做的方式,有些东西可能会破坏,否则我无法解释为什么Django团队会做它所做的事情.

python django django-queryset

5
推荐指数
1
解决办法
175
查看次数

git - 在功能分支上团队工作的最佳实践是什么?

我们有以下分支机构:
masterdevelop.
我们创建了一个新的分支机构feature,develop并指派了一个团队来处理它.
在开发期间:

  • 远程develop接受其他团队的新提交.
  • remote feature接受由其工作的团队成员推送的新提交.

有时develop需要更新热门修复程序feature.
当然,在周期结束时,feature应该合并到develop.

我们没有单一的工作流程来保持feature和它的本地副本同步develop,然后确保所有本地副本都基于相同的提交.

我建议的工作流程如下:

与时俱进 develop

  1. 新的提交被推到了 develop
  2. 我重新feature分支:

    git checkout feature
    git pull --rebase origin develop
    git push origin feature
    
    Run Code Online (Sandbox Code Playgroud)
  3. 所有本地feature副本运行:git pull --rebase origin feature

feature从本地副本更新分支

  1. 团队成员已经完成了他在feature分支机构的工作
  2. 他确保他的本地副本是最新的: git pull --rebase origin feature
  3. 他将他的提交合并到feature:

    git checkout feature
    git pull origin …
    Run Code Online (Sandbox Code Playgroud)

git branching-and-merging

5
推荐指数
1
解决办法
853
查看次数

RabbitMQ:如何将任务队列和扇出/路由/主题模型结合起来?

我的环境中有一个生产者和多个消费者。
生产者创建 2 种类型的消息:

  1. 一条消息只需要由一个消费者处理(任何消费者都可以)。
  2. 需要由所有消费者处理的消息。

如何实施?
对于消息类型 1,工作队列是合适的模型。
对于消息类型 2,扇出/直接/路由/主题是合适的。
但我该如何将它们结合起来呢?

rabbitmq

3
推荐指数
1
解决办法
3107
查看次数

为什么我的 Go 服务器内存泄漏?

我写了一个简单的 TCP 服务器。
问题是,在对其进行压力测试时,内存使用量似乎急剧增加,并且在测试完成后并没有减少。服务器启动时,大约需要 700KB。
在压力测试期间和之后,内存使用量跃升至约 7MB。
这是我的代码:

package main

import (
    "net"
    "log"
    "fmt"
    "bufio"
)

func main() {
    ln, err := net.Listen("tcp", ":8888")
    if err != nil {
        log.Fatal(err)
    }
    defer ln.Close()
    for {
        conn, err := ln.Accept()
        if err != nil {
            fmt.Println(err)
            continue
        }
        go handle(conn)
    }
}

func handle(conn net.Conn) {
    defer conn.Close()
    fmt.Println("Accepted", conn.LocalAddr())
    for {
        buf, err := bufio.NewReader(conn).ReadString('\n')
        if err != nil {
            break
        }
        msg := string(buf[:len(buf)-2])
        fmt.Println("Received", msg)
        conn.Write([]byte("OK\n"))
    } …
Run Code Online (Sandbox Code Playgroud)

go

0
推荐指数
1
解决办法
1346
查看次数