我有以下型号:
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(r'^articlebuffer/(?P<mid>\d+)/$',views.articlebuffer, name="articlebuffer"),
我需要在表单验证中使用article_id,以便文章和电子邮件是唯一的。我怎样才能在formset和form中实现它
以下是使用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,
})
答案 0 :(得分:1)
在创建新的ArticleBufferFormSet
formset = ArticleBufferFormSet(dict(request.POST.items() + {'article_id': article_id}))