Hi Everyone!
I intend to write an add/update form.
models.py:
class NewsTickerItem(models.Model):
#Content
content = models.CharField(max_length=60)
#Highlighted
is_highlighted = models.BooleanField()
#Active
is_active = models.BooleanField()
# Ordering number
ordernum = models.IntegerField()
#Expiry time
expiry_time = models.DateTimeField()
def __unicode__(self):
return self.content
forms.py:
class NewsTickerItemForm(ModelForm):
class Meta:
model = NewsTickerItem
urls.py:
url(r'^spadmin_newstickeritem_changeform/add/$', views.spadmin_newstickeritem_changeform,
name='spadmin_newstickeritem_changeform_add'),
url(r'^spadmin_newstickeritem_changeform/(?P<newstickeritem_id>\d+)/$',
views.spadmin_newstickeritem_changeform,
name='spadmin_newstickeritem_changeform_update'),
I
have a link (spadmin_newstickeritem_changeform_add) on my webpage to
add new items, and another link
(spadmin_newstickeritem_changeform_update) to update existing items. Both links refer to views.spadmin_newstickeritem_changeform method.
views.py:
def spadmin_newstickeritem_changeform(request, newstickeritem_id = None):
if request.method == 'POST':
if newstickeritem_id:
newstickeritem = NewsTickerItem.objects.get(pk=newstickeritem_id)
form = NewsTickerItemForm(request.POST, instance=newstickeritem)
else:
form = NewsTickerItemForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('spadmin_newstickeritem_changelist'))
else:
if newstickeritem_id:
newstickeritem = NewsTickerItem.objects.get(pk=newstickeritem_id)
form = NewsTickerItemForm(instance=newstickeritem)
else:
form = NewsTickerItemForm()
context = {'functiontitle': 'Newsticker item', 'form': form, 'newstickeritem_id': newstickeritem_id}
return render(request, 'spweb/spadmin/spadmin_newstickeritem_changeform.html', context)
I treat adding, and updating in one method.
spadmin_newstickeritem_changeform.html:
{% extends "spweb/spadmin/spadmin_base_ext.html" %}
{% block content %}
<form action="{% url 'spadmin_newstickeritem_changeform_update' newstickeritem_id %}" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save" />
</form>
{% endblock %}
Thanks for your answers!