I have a ModelForm:
-- class ArticleForm(forms.ModelForm):class Meta:model = Articlefields = ['url',]
The Article model has a url field which is unique. I want users to enter a URL. If the Article already exists, it gets reused. Otherwise, a new instance is created.
And the corresponding view:
1 @login_required2 def get_article(request):3 if request.method == 'POST':
4 # Should I get a new instance here?5 form = ArticleForm(request.POST, instance=None)6 if form.is_valid():7 article, created = Article.objects.get_or_create(url=form.cleaned_data['url'])
9 # Some more work goes here10 return redirect(reverse('articles:list'))11 else:12 form = ArticleForm()13 return render(request, 'articles/get_article.html', {'form': form})
The form is validating the uniqueness of the model, which is great. The dilemma I am having is that I would like to bind the form to the existing instance in line 4. But at that point, the form has not been cleaned, so I wouldn't want to hit the database with it.
What's the proper pattern to do this?
Thanks a lot!You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/b9fc0fed-d8f6-44e8-8687-11d94669d2a0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment