小编Vla*_* T.的帖子

如何在CreateView中设置ForeignKey?

我有一个模特:

class Article(models.Model):
    text = models.CharField()
    author = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)

如何编写基于类的视图来创建新模型实例并将author外键设置为request.user

更新:

解决方案转到下面单独的答案.

python django django-class-based-views

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

如何在基于类的通用视图中访问RequestContext?

我在urls.py中有这条路径:

archive_index_dict = {
    'queryset': News.objects.filter(show=True),
    'date_field': 'date',
    'template_object_name': 'object_list',
}

...

url(r'^$', 'django.views.generic.date_based.archive_index',
        archive_index_dict, name='news_archive_index'
    ),
Run Code Online (Sandbox Code Playgroud)

现在我想在模板中检测页面是否是最新的(这是用于菜单样式).既不 在模板中工作{{ request.path }}也不{{ request.get_full_path }}工作.

我应该用什么呢?

要获得request模板我不得不添加可django.core.context_processors.requestTEMPLATE_CONTEXT_PROCESSORS.默认情况下不设置此项(因为django 1.3).

django requestcontext django-generic-views class-based-views

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

如何在不创建新对象的情况下更新User对象?

以下在shell中工作正常:

>>> from django.contrib.auth.models import User
>>> user=User.objects.get(pk=1)
>>> user.first_name = u'Some'
>>> user.last_name = u'Name'
>>> user.save()
>>> user.first_name
u'Some'
>>> user.last_name
u'Name'
Run Code Online (Sandbox Code Playgroud)

然后我尝试对表单做同样的事情:

# forms.py
class UserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ['first_name', 'last_name']


# views.py
def edit_names(request, template_name="registration/edit_names.html"):
    if request.method == "POST":
        form = UserForm(data=request.POST)
        if form.is_valid():
            user = form.save(commit=False)
            user.save()
            url = urlresolvers.reverse('my_account')
            return HttpResponseRedirect(url)
    else:
        form = UserForm(instance=request.user)
    page_title = _('Edit user names')
    return render_to_response(template_name, locals(),
        context_instance=RequestContext(request))

# edit_names.html
<form action="." method="post">{% csrf_token …
Run Code Online (Sandbox Code Playgroud)

django django-models django-forms

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

如何将选择选项显示为按钮?

我有一个带有选择的表单:

<select name="work_days" id="id_work_days" multiple="multiple">
  <option value="1">sun</option>
  <option value="2">mon</option>
  <option value="3">tue</option>
  <option value="4">wed</option>
  <option value="5">thu</option>
  <option value="6">fri</option>
  <option value="7">sat</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我想通过 css 和 javascript 将此表单字段呈现为一组按钮(见截图)

在此处输入图片说明

我试图将其显示为

<input type="button" name="work_days" value="sun">
<input type="button" name="work_days" value="mon">
<input type="button" name="work_days" value="tue">
<input type="button" name="work_days" value="wed">
...
Run Code Online (Sandbox Code Playgroud)

但我无法从后端的这个表单中获取和验证数据。选择小部件将提供最好的服务,但我不知道如何将其显示为按钮。

我会很感激一个想法或一个例子。

javascript css

5
推荐指数
2
解决办法
8911
查看次数

Django:使用正则表达式更新多个对象

我想根据这个这个'blog/'文档从多个对象的字段中删除子字符串:slug

>>> import re
>>> from django.db.models import F
>>> p = re.compile('blog/')
>>> Blog.objects.update(slug=p.sub('', F('slug')))
Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: expected string or buffer
Run Code Online (Sandbox Code Playgroud)

我尝试添加str()到最后一个字符串,它通过了,没有错误:

>>> Blog.objects.update(slug=p.sub('', str(F('slug'))))
Run Code Online (Sandbox Code Playgroud)

但它插入(DEFAULT: )slug所有对象的字段中。

有什么建议么?

django django-queryset

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

Django 1.3 CreateView,ModelForm和request.user过滤字段

我正在尝试过滤ModelForm上的字段.我为我的视图创建了通用CreateView的子类.我在网上发现了许多关于我的问题的引用,但是对于Django 1.3的基于类的视图,这些解决方案似乎不适合(至少对我而言).

这是我的模特:

#models.py

class Subscriber(models.Model):

    user = models.ForeignKey(User)
    subscriber_list = models.ManyToManyField('SubscriberList')
    ....

class SubscriberList(models.Model):

    user = models.ForeignKey(User)
    name = models.CharField(max_length=70)
....
Run Code Online (Sandbox Code Playgroud)

这是我的观点:

#views.py

class SubscriberCreateView(AuthCreateView):
    model = Subscriber
    template_name = "forms/app.html"
    form_class = SubscriberForm
    success_url = "/app/subscribers/"

    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.user = self.request.user
        return super(SubscriberCreateView, self).form_valid(form) 
Run Code Online (Sandbox Code Playgroud)

这是我添加订阅者的原始表单,没有过滤器:

#forms.py

class SubscriberForm(ModelForm):

    class Meta:
        model = Subscriber
        exclude = ('user', 'facebook_id', 'twitter_id')
Run Code Online (Sandbox Code Playgroud)

这是我修改后的表单,尝试过滤,但不起作用:

#forms.py

class SubscriberForm(ModelForm):

    class Meta:
        model = Subscriber
        exclude = ('user', 'facebook_id', 'twitter_id')

    def __init__(self, …
Run Code Online (Sandbox Code Playgroud)

django-forms django-views django-class-based-views django-1.3

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

如何调用此操作?

我正在尝试解决一个我认为是标准Python任务的问题,并且已经在这里提出过,但我不知道它的正确词汇术语.

鉴于结构

((['a'], t1), (['a', 'b', 'c'], t2), (['c', 'd'], t3))
Run Code Online (Sandbox Code Playgroud)

我需要得到这样的东西

(('a', [t1, t2]), ('b', [t2]), ('c', [t2, t3]), ('d',[t3]))
Run Code Online (Sandbox Code Playgroud)

根据给定的数据.如何解决这个任务或者至少这个操作的名称是什么?

python

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