在我views.py保存表单之前我分配值.我过去常常这样做:
projectForm.lat = session_results['lat']
projectForm.lng = session_results['lng']
Run Code Online (Sandbox Code Playgroud)
现在,由于变量列表中有一点长,我想遍历session_results与下面的循环(如亚当描述这里):
for k,v in session_results.iteritems():
projectForm[k] = v
Run Code Online (Sandbox Code Playgroud)
但是我得到'Project' object does not support item assignment了循环解决方案的错误.我很难理解为什么.Project是模型类,我用于ModelForm.
谢谢您的帮助!
我试图实现一个Class Based ListView显示选择的表集.如果第一次请求站点,则应显示数据集.我更喜欢POST提交,但GET也没关系.
这是一个容易处理的问题,function based views但是基于类的视图我很难理解.
我的问题是我得到了各种错误,这是由于我对基于分类的观点的理解有限.我已阅读各种文档,我理解直接查询请求的视图,但只要我想在查询语句中添加一个表单,我就遇到了不同的错误.对于下面的代码,我会收到一个ValueError: Cannot use None as a query value.
根据表单条目(否则选择整个数据库),基于类的ListView的最佳实践工作流程是什么?
这是我的示例代码:
models.py
class Profile(models.Model):
name = models.CharField(_('Name'), max_length=255)
def __unicode__(self):
return '%name' % {'name': self.name}
@staticmethod
def get_queryset(params):
date_created = params.get('date_created')
keyword = params.get('keyword')
qset = Q(pk__gt = 0)
if keyword:
qset &= Q(title__icontains = keyword)
if date_created:
qset &= Q(date_created__gte = date_created)
return qset
Run Code Online (Sandbox Code Playgroud)
forms.py
class ProfileSearchForm(forms.Form):
name = forms.CharField(required=False)
Run Code Online (Sandbox Code Playgroud)
views.py
class ProfileList(ListView):
model = Profile
form_class = …Run Code Online (Sandbox Code Playgroud) forms django listview django-class-based-views class-based-views
我是PostgreSQL的新手,我试着理解它.我熟悉db和MySQL.
我试图删除我创建的数据库,因为psql似乎忽略了我尝试通过Django推送的更改.
当我执行时,\l我得到以下响应:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
------------------+--------+----------+-------------+-------------+-------------------
postgres | neurix | UTF8 | en_AU.UTF-8 | en_AU.UTF-8 |
test_db | neurix | UTF8 | en_AU.UTF-8 | en_AU.UTF-8 |
template0 | neurix | UTF8 | en_AU.UTF-8 | en_AU.UTF-8 | =c/neurix +
| | | | | neurix=CTc/neurix
template1 | neurix | UTF8 | en_AU.UTF-8 | en_AU.UTF-8 | =c/neurix +
| | | | | neurix=CTc/neurix
template_postgis | neurix …Run Code Online (Sandbox Code Playgroud) 嗨Stackoverflow人,
我用GeoDjango做了我的第一步,我正在寻找更好的选项来检查错误的sql语句.
到目前为止,我只是想在postgresql表中保护lng + lat点.
该模型定义为:
geolocation = models.PointField(_('Geo Location'),
geography=True,
null = True,
blank = True,
help_text=_('Geolocation with Longitude and Latitude'))
objects = models.GeoManager()
Run Code Online (Sandbox Code Playgroud)
在我看来,我尝试执行以下命令
savedProject.geolocation = GEOSGeometry('POINT(%s %s)' %(u_lng,u_lat))
Run Code Online (Sandbox Code Playgroud)
但是当我尝试保存表单时收到以下错误:
异常类型:InternalError异常值:当前事务被中止,命令被忽略,直到事务块结束
这个错误的原因是什么?我相信sql语句可能有问题,但检查的最佳方法是什么?Django只提供一般错误消息"内部错误".
感谢您的帮助和建议!
嗨Stackoverflow人,
在forms.py中的clean函数中,我想在会话变量中自动保存一些信息.但是,我似乎无法访问请求变量.
切换请求变量的所有示例都基于基于函数的视图,但在这里我使用的是基于类的视图.
我的forms.py:
from django import forms
from item.models import Item
class CreateItemForm(forms.ModelForm):
class Meta:
model = Item
fields = ('name', 'description')
def __init__(self, request, *args, **kwargs):
self.request = request
super(CreateItemForm, self).__init__(*args, **kwargs)
def clean(self):
cleaned_data = super(CreateItemForm, self).clean()
if cleaned_data.get("address"):
self.request.session['name'] = cleaned_data.get("name")
else:
raise forms.ValidationError(_('Oops, can\'t find location.'))
return self.cleaned_data
Run Code Online (Sandbox Code Playgroud)
我的views.py:
from django.views.generic.edit import FormView
from item.forms import CreateItemForm
class ItemCreate(FormView):
form_class = CreateItemForm
template_name = 'item/item_create.html'
success_url = 'http://www.google.com'
Run Code Online (Sandbox Code Playgroud)
request将views.py中的变量移交给forms.py 的最佳方法是什么?
谢谢您的回答.
我在Django 1.5应用程序中分配了一个用户的权限.当我列出所有用户权限时
In [1]: user.get_all_permissions()
Out[1]: set([u'profile.change_profile'])
Run Code Online (Sandbox Code Playgroud)
我可以看到一个权限(这是正确的和想要的).用户也不是超级用户,不是管理员.
In [2]: user.is_superuser
Out[2]: False
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用user.has_perm,我总是得到True任何提交的权限请求的返回.
In [3]: user.has_perm('random_permission')
Out[3]: True
Run Code Online (Sandbox Code Playgroud)
如果用户是超级用户/管理员,我期望的行为.为什么非超级用户总是True为每个请求获取?我错过了任何设置吗?
我想在Django项目中实现徽章应用程序,以提供与Stackoverflow相同的功能来奖励用户徽章.
我查看了各种应用程序(应用程序列表),各种博客都提到了Brabeion.这是Badges最好的Django应用程序吗?
该项目似乎没有维持一段时间,github上的问题仍未得到答复.文档很简单,但是没有解释细节,award_points例如下面示例中的方法.
def my_view(request):
if request.method == "POST":
# do some things
request.user.profile.award_points(15)
badges.possibly_award_badge("points_awarded", user=request.user)
# more view
Run Code Online (Sandbox Code Playgroud)
另一方面,djangopackages.com列出了Django成就.文档似乎很好而且详细,但是,每个成就都需要它自己的类(可以是一个长类定义文件).
你在为项目使用什么?如果您使用其中一个描述的软件包,您是否有可能在点注册之间共享一些代码?
嗨Stackoverflow人,
我正在使用基于类的视图和测试站点,我按照文档来设置基于类的视图.对于项目站点(基于下面的项目模型),我只想为下面的简单项目模型创建一个快速CRUD应用程序.
models.py
class Project(models.Manager):
name = models.CharField(_('Name of the Project'), max_length = 100,)
slug = models.SlugField(max_length=100,)
...
Run Code Online (Sandbox Code Playgroud)
views.py
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.core.urlresolvers import reverse_lazy
from project.models import Project
class ProjectCreate(CreateView):
model = Project
class ProjectUpdate(UpdateView):
model = Project
Run Code Online (Sandbox Code Playgroud)
当我现在加载\project\add,应该调用ProjectCreate该类时,我收到以下错误:
类型对象'Project'没有属性'_meta'
我不懂为什么.模型类通常不需要元信息.在其他基于类的项目中,我没有遇到这个问题.
谢谢你的建议!
追溯
Django Version: 1.4.1
Python Version: 2.7.1
Traceback:
File "/Users/neurix/Development/vir_project_2.0/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/Users/neurix/Development/vir_project_2.0/lib/python2.7/site-packages/django/views/generic/base.py" in view
48. return self.dispatch(request, *args, **kwargs) …Run Code Online (Sandbox Code Playgroud) python django meta django-class-based-views class-based-views
由Google加载完整的预训练word2vec模型是耗时且繁琐的,因此我想知道是否有机会删除低于特定频率的单词以将vocab计数降低到例如200k字.
我在gensim包中找到了Word2Vec方法来确定单词频率并再次重新保存模型,但我不确定如何在再次保存之前从预先训练的模型中进行pop/ remove词汇.我找不到在任何暗示KeyedVector class和Word2Vec class这样的操作?
https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/word2vec.py https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/keyedvectors.py
如何选择预训练word2vec模型的词汇子集?
在我的CreateView班级中,我将覆盖以下form_valid()函数:
class ActionCreateView(CreateView):
model = Action
form_class = ActionCreateForm
success_url = reverse_lazy('profile')
def get_initial(self):
initial = super(ActionCreateView, self).get_initial()
initial['request'] = self.request
return initial
def form_valid(self, form):
form.instance.user = self.request.user
print 'user: %s'%form.instance.user
try:
da = form.cleaned_data['deadline_date']
ti = datetime.now()
form.instance.deadline = datetime(da.year, da.month, da.day, ti.hour, ti.minute, ti.second )
except Exception:
raise Http404
return super(ActionCreateView, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)
但事实证明,该form_valid方法永远不会被调用,因为user它永远不会打印出来.有趣的clean是,调用forms.py中的方法.
没有显示错误(因此我没有要显示的回溯).用户只是重新定向到表单. 这种行为可能是什么原因? 我正在使用Django 1.5和Python 2.7.
django validation django-class-based-views class-based-views django-1.5
django ×8
python ×3
django-1.5 ×2
postgresql ×2
achievements ×1
badge ×1
dictionary ×1
django-forms ×1
forms ×1
gensim ×1
geodjango ×1
listview ×1
loops ×1
meta ×1
nlp ×1
permissions ×1
postgis ×1
request ×1
sql-drop ×1
validation ×1
word2vec ×1