我有一个模特:
class Article(models.Model):
text = models.CharField()
author = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)
如何编写基于类的视图来创建新模型实例并将author外键设置为request.user?
更新:
解决方案转到下面单独的答案.
我在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.request到TEMPLATE_CONTEXT_PROCESSORS.默认情况下不设置此项(因为django 1.3).
django requestcontext django-generic-views class-based-views
以下在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) 我有一个带有选择的表单:
<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)
但我无法从后端的这个表单中获取和验证数据。选择小部件将提供最好的服务,但我不知道如何将其显示为按钮。
我会很感激一个想法或一个例子。
我想根据这个和这个'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所有对象的字段中。
有什么建议么?
我正在尝试过滤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
我正在尝试解决一个我认为是标准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)
根据给定的数据.如何解决这个任务或者至少这个操作的名称是什么?