2013-12-07 22 views
0

的验证传递的参数我有以下模型:如何使用通过URL形式

class ArticleUser(models.Model): 
    email = models.EmailField(max_length=200) 
    fullname = models.CharField(max_length=200) 
    article = models.ForeignKey(Article) 
    create_time =models.DateTimeField() 
    def save(self, *args, **kwargs): 
     ''' On save, update timestamps ''' 
     self.create_time = datetime.datetime.utcnow().replace(tzinfo=utc) 
     super(ArticleUser, self).save(*args, **kwargs) 

    class Meta: 
     unique_together = (('email','article'),) 

我传递中的article_id通过URL:

url(r'^articlebuffer/(?P<mid>\d+)/$',views.articlebuffer, name="articlebuffer"), 

我需要使用的article_id在表单的验证,以便文章和电子邮件是唯一的。我怎样才能使用表单集我认为实现它在该formset以及在形式

这里:

def articlebuffer(request,mid): 
    ArticleBufferFormSet = modelformset_factory(ArticleUser,exclude=('article','create_time'))  
    if request.method == 'POST': 
     formset = ArticleBufferFormSet(request.POST) 
     if formset.is_valid(): 
      instances = formset.save(commit=False)     
      for instance in instances: 
       instance.article_id = mid 
       try: 
        instance.save() 
       except: 
        error="Unique Constraint Error"      

      return HttpResponseRedirect('') 
    else: 
     formset = ArticleBufferFormSet(queryset= ArticleUser.objects.none()) 
    return render (request, 'tracking/createarticlebuffer.html',{'formset':formset, 
                 }) 

回答

1

与POST数据包含它,当你创建一个新的ArticleBufferFormSet

formset = ArticleBufferFormSet(dict(request.POST.items() + {'article_id': article_id}))