簡體   English   中英

Django在輸入鏈接時創建一個對象

[英]Django create an object when enter its link

標題可能不會告訴我的問題,抱歉。

我有一個這樣的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)

我有一個向Baslik模型添加對象的功能。 我只是輸入一個標題,它工作正常。 這是我的forms.py

class BaslikForm(ModelForm):
    class Meta:
        model = Baslik
        fields = ('title',)

我對每個對象的網址都是這樣的: url(r'^(?P<title>.*)/$', 'tek', name = "tek_baslik")我想在用戶輸入其未來鏈接時創建一個新對象如果它尚未創建。 例如,當用戶輸入/baslik/stack我想立即創建一個“堆棧”對象,並為每個對象呈現其在views.py中定義的頁面。 我怎樣才能做到這一點。 任何想法都會有幫助。 謝謝。

這是您可以采取的方法:

1)定義一個新的url結構:

url(r'^baslik/(?P<title>.*)/$', views.baslik_handle, name = "tek_baslik")

2)您不需要modelform,您可以通過視圖直接處理它。 使用get_or_create在views.baslik_handle。 例如

def baslik_handle(request, title):
   baslik, created = Baslik.objects.get_or_create(title=title)

ModelForm是不必要的,試試這個:

視圖

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)

模板

{% if baslik %}
    {{ baslik.title }}
    ...
{% endif %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM