2013-08-24 29 views
1

我有以下基於模型的表單。驗證後在django中更改表格排除值

class Article(models.Model): 
    title = models.CharField(max_length=100, db_column='title') 
    url = models.CharField(max_length=100, db_column='url') 
    category = models.ForeignKey(Category, db_column='category') 
    description = models.TextField(db_column='description') 
    createDate = models.DateTimeField(db_column='createDate') 

    def __unicode__(self): 
     return self.title 

    class Meta: 
     db_table = 'articles' 
     ordering = ['createDate'] 

形式

class ArticleForm(forms.ModelForm): 
    class Meta: 
     model = Article 
     fields = ('title', 'description', 'category') 

我要的是lowercasing清潔標題來驗證URL的形式和變化值。 我該怎麼做到這一點? 我看起來URL是排除的值,所以如何在驗證後在表單中更改它?

謝謝。

回答

1

節省這樣的文章時,您可以提供一個自定義URL:

class Article(models.Model): 
    ... 

    def save(self, *args, **kwargs): 
     if not self.url: 
      self.url = self.title.lower() 

     super(Article, self).save(*args, **kwargs) 
+0

這將爲新的情況下工作,但有關編輯現有的文章什麼,說要更改標題。在這種情況下,網址不會更新。 – Fiver

+0

您可以刪除'if'語句來始終覆蓋URL。 – HankMoody

+0

謝謝你這個工作。我也找到了另一種方式。 form.is_valid():article = form.save(commit = False)article.url = article.title.lower()article.save()form = Article(request.POST) –