小编neu*_*rix的帖子

对象不支持项目分配错误

在我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.

谢谢您的帮助!

python django dictionary loops

47
推荐指数
2
解决办法
8万
查看次数

Django:基于类的ListView中的搜索表单

我试图实现一个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

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

PostgreSQL:删除数据库,但DB仍在那里

我是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)

postgresql sql-drop

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

如何调试:内部错误当前事务被中止,命令被忽略直到事务块结束

嗨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只提供一般错误消息"内部错误".

感谢您的帮助和建议!

python django postgresql postgis geodjango

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

Django:访问forms.py clean函数中的请求

嗨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 request django-forms django-class-based-views

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

Django:user.has_perm始终为true,用户不是超级用户.为什么?

我在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 permissions django-1.5

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

Django:Django项目的最佳徽章应用程序

我想在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成就.文档似乎很好而且详细,但是,每个成就都需要它自己的类(可以是一个长类定义文件).

你在为项目使用什么?如果您使用其中一个描述的软件包,您是否有可能在点注册之间共享一些代码?

django achievements badge

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

Django:模型对象"在基于类的视图中没有属性'_meta'"

嗨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

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

使用Gensim减少Google的Word2Vec模型

Google加载完整的预训练word2vec模型是耗时且繁琐的,因此我想知道是否有机会删除低于特定频率的单词以将vocab计数降低到例如200k字.

我在gensim包中找到了Word2Vec方法来确定单词频率并再次重新保存模型,但我不确定如何在再次保存之前从预先训练的模型中进行pop/ remove词汇.我找不到在任何暗示KeyedVector classWord2Vec 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模型的词汇子集?

nlp gensim word2vec

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

Django:没有调用CBV方法form_valid()

在我的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

7
推荐指数
2
解决办法
4988
查看次数