2010-11-21 23 views
2

Bir blog oluştururken aşağıdaki model sınıfını ve formunu kullanıyorum. Ama kullanıcının url (slugified alan) eklemesini istemediğimden kendimi sıkışmış hissediyorum nasıl slugified ekleyebilirim modeli kaydetmeden önce url, eğer doğruysa görünümde yapılmalıdır. PS: Sümüklü alanların bulunmadığını duyduğum yerde uygulama motorunu kullanıyorum.slugified area nasıl eklenir

class Post(db.Model): 
      title=db.StringProperty(required=True) 
      url=db.StringProperty(required=True) 
      content_html=db.TextProperty(required=True) 
      dateTime=db.DateTimeProperty(auto_now_add=True,required=True) 
      tags=db.StringListProperty() 


class PostForm(djangoforms.ModelForm): 
class Meta: 
    model=Post 
    exclude=['url'] 
+0

deneyin http: //www.smipple Net/parçacık/brettsky/SlugProperty% 20for% 20App% 20Engine% 20based% 20On% 20Django% 27s% 20SlugField – sunn0

cevap

2

Bunu sizin görüşünüzde yapabilir veya formunuzun kaydetme yöntemini geçersiz kılabilirsiniz. Eğer görünümünde yaparsanız böyle bir şey olacaktır:

#views.py 
from django.template.defaultfilters import slugify 

def post_create(request, ...): 
    ... 
    if request.method == 'POST': 
     form = PostForm(request.POST) 
     if form.is_valid(): 
      post = form.save(commit=False) 
      title = form.cleaned_data['title'] 
      slugified_title = str(slugify(title)) 
      post.url = [modify the slugified_title however you want...] 
      post.save() 
    ... 

Alternatif olarak, formun benzer görünümde olacaktır kaydetme yöntemi geçersiz kılabilirsiniz:

#forms.py 
class PostForm(django.forms.ModelForm): 
    class Meta: 
     model=Post 
     exclude=['url'] 
    def save(self, commit=True, force_insert=False, force_update=False): 
     post = super(PostForm, self).save(commit=False) 
     slugified_title = str(slugify(post.title)) 
     post.url = [modify the slugfield_title however you want...] 
     post.save()