小编Jon*_*han的帖子

对于类型字符变化,/ post/113 /的DatabaseError值太长(10)

我在Heroku上使用postgresql为我的Django App.当我尝试为我的帖子发表评论时,我有时会得到这个错误(有时候不是所有时间).

尽管存在错误,但注释仍然保存,但save()之后的所有代码都不会执行.

这个问题只发生在postgresql上.在我使用sqlite的本地主机上,一切正常.

我不确定这是什么原因.

这就是我的模型的样子

class Comment(models.Model):
    post = models.ForeignKey(post)
    date = models.DateTimeField(auto_now_add=True)
    comment = models.TextField()
    comment_user = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)

这就是我的评论模型的样子.那是因为我没有添加max_length进行评论吗?这是Traceback

DatabaseError at /post/114/
value too long for type character varying(10)
Request Method: POST
Request URL:    http://www.mysite.com/post/114/
Django Version: 1.4.1
Exception Type: DatabaseError
Exception Value:    
value too long for type character varying(10)
Exception Location: /app/.heroku/venv/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py in execute, line 52
Python Executable:  /app/.heroku/venv/bin/python2.7
Python Version: 2.7.2
Python Path:    
['/app',
 '/app/.heroku/venv/bin',
 '/app/.heroku/venv/lib/python2.7/site-packages/pip-1.1-py2.7.egg',
 '/app/.heroku/venv/lib/python2.7/site-packages/distribute-0.6.31-py2.7.egg',
 '/app',
 '/app/.heroku/venv/lib/python27.zip',
 '/app/.heroku/venv/lib/python2.7',
 '/app/.heroku/venv/lib/python2.7/plat-linux2',
 '/app/.heroku/venv/lib/python2.7/lib-tk',
 '/app/.heroku/venv/lib/python2.7/lib-old',
 '/app/.heroku/venv/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7',
 '/usr/local/lib/python2.7/plat-linux2', …
Run Code Online (Sandbox Code Playgroud)

django postgresql heroku

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

理解Python中的re.search

我试图允许用户输入字母数字,下划线和空格作为名称.我一直在if not re.search(r'^[\w-]+$', name):用来检查名称是否包含除字母数字,下划线和空格以外的任何内容.但在这里我只能输入一个单词,而不是多个单词.我究竟做错了什么?

python

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

在没有 for 循环的情况下从查询集中提取对象值

我有一个模型叫

class UserTag(models.Model):
  name = models.CharField(max_length=64, unique= True)
  users = models.ManyToManyField(User)
Run Code Online (Sandbox Code Playgroud)

我正在尝试根据这样的用户过滤其内容

usertags = UserTag.objects.filter(users=request.user)
Run Code Online (Sandbox Code Playgroud)

现在我想要这个特定查询的所有标签名称的列表。我知道我可以使用循环

for tag in usertags:
  tags.append(tag.name)
Run Code Online (Sandbox Code Playgroud)

但是如果用户有 1000 个标签呢?这不会减慢响应速度吗?有没有更有效的方法来处理这个问题?

django

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

Docker中的应用不会更新

我正在尝试在docker中运行一个简单的Flask应用程序。但是似乎即使我更新了app.py代码并重新启动docker容器也没有任何更新。

我在OS X上运行docker。这是否是我所缺少的简单东西,或者这是预期的行为?

这是我的docerfile的样子:

FROM ubuntu:14.04.3

# install dependencies
RUN apt-get update
RUN apt-get install -y nginx
RUN apt-get install -y supervisor
RUN apt-get install -y python3-pip

# update working directories
ADD ./app /app
ADD ./config /config
ADD requirements.txt /

# install dependencies
RUN pip3 install -r requirements.txt

# setup config
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
RUN rm /etc/nginx/sites-enabled/default

RUN ln -s /config/nginx.conf /etc/nginx/sites-enabled/
RUN ln -s /config/supervisor.conf /etc/supervisor/conf.d/

EXPOSE 80
CMD ["supervisord", "-n"]
Run Code Online (Sandbox Code Playgroud)

python docker

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

DateTimeField获取超过48小时的所有对象

我试图找到一种基于datetimefiled进行基于文件管理器的查询的直接方法.我尝试过类似的东西

timeDiff = datetime.datetime.now(pytz.utc) - latest_order.date
days = timeDiff.days
if days <= 2:
Run Code Online (Sandbox Code Playgroud)

但它总是给我RuntimeWarning: DateTimeField received a naive date time警告.有没有更好的方法来激发这些查询?我怎么能做,例如,filer并选择48小时前创建的所有对象?

这样的事情会是正确的做法吗?

example = Example_Request.objects.filter(date_created__gte=datetime.datetime.today()-datetime.timedelta(days=2))
Run Code Online (Sandbox Code Playgroud)

django

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

标签 统计

django ×3

python ×2

docker ×1

heroku ×1

postgresql ×1