[英]Django create an object when enter its link
the title probably doesn't tell my problem, sorry about it. 标题可能不会告诉我的问题,抱歉。
I have a models.py
like this: 我有一个这样的
models.py
:
class Baslik(models.Model):
user = models.ForeignKey(User, null=True, blank=True)
title = models.CharField(max_length=50)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
active = models.BooleanField(default=True)
I have a function to add object to Baslik model. 我有一个向Baslik模型添加对象的功能。 I just enter a title and it works fine.
我只是输入一个标题,它工作正常。 This is my
forms.py
: 这是我的
forms.py
:
class BaslikForm(ModelForm):
class Meta:
model = Baslik
fields = ('title',)
My urls for every object is like this: url(r'^(?P<title>.*)/$', 'tek', name = "tek_baslik")
I want to create a new object when user enter its future link if it isn't already created. 我对每个对象的网址都是这样的:
url(r'^(?P<title>.*)/$', 'tek', name = "tek_baslik")
我想在用户输入其未来链接时创建一个新对象如果它尚未创建。 For instance when user enters /baslik/stack
I want to create a "stack" object immediately and render its page that defined in views.py
for every object. 例如,当用户输入
/baslik/stack
我想立即创建一个“堆栈”对象,并为每个对象呈现其在views.py
中定义的页面。 How can I do this. 我怎样才能做到这一点。 Any idea would help.
任何想法都会有帮助。 Thanks.
谢谢。
Here's an approach you can take: 这是您可以采取的方法:
1) Define a new url structure: 1)定义一个新的url结构:
url(r'^baslik/(?P<title>.*)/$', views.baslik_handle, name = "tek_baslik")
2) You don't need the modelform, you can directly handle it through the views. 2)您不需要modelform,您可以通过视图直接处理它。 Use get_or_create in views.baslik_handle.
使用get_or_create在views.baslik_handle。 eg
例如
def baslik_handle(request, title):
baslik, created = Baslik.objects.get_or_create(title=title)
The ModelForm is unnecessary, try this: ModelForm是不必要的,试试这个:
view 视图
def create_baslik(request, title):
context = RequestContext(request)
context_dict = {}
baslik, created = Baslik.objects.get_or_create(title=title, user=request.user)
context_dict['baslik'] = baslik
return render_to_response('baslik.html', context_dict, context)
template 模板
{% if baslik %}
{{ baslik.title }}
...
{% endif %}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.