ModelForm ile basit bir CRUD oluşturmaya çalışıyorum. Düzenleme yaptığım her seferde, kaydetme, verilerin yeni bir örneğini oluşturur. Bu yüzden güncellenmiş bir dosya yerine DB'de ek bir satır düzenleyip düzenliyorum. PK (id) 'i formda gizli bir alan olarak saklamadığı için varolan bir yardım kuruluşunu nasıl kurtaracağını bildiğim bir kayıptayım. 'Fabulous' ModelForm'u kullanmaya başlamadan önce her zaman böyle yaptım!Django ModelForm
Beni deli ediyor, her şeyi okudum ve her şeyi doğru yaptığımı söyleyebilirim. İşte
benim kodudur
..Modeli:
from django.db import models
from django.conf import settings
COUNTRY_CHOICES = settings.COUNTRIES
class Charities(models.Model):
charity_name = models.CharField(max_length=100)
country = models.CharField(max_length=4, choices=COUNTRY_CHOICES)
registration_number = models.CharField(max_length=100)
address1 = models.CharField(max_length=100)
address2 = models.CharField(max_length=100)
city = models.CharField(max_length=30)
zip = models.CharField(max_length=10)
phone = models.CharField(max_length=20)
email = models.EmailField()
charity_logo_image = models.CharField(max_length=100)
charity_banner_image = models.CharField(max_length=100)
charity_accepted = models.IntegerField()
def __str__(self):
return self.charity_name
def __unicode__(self):
self.charity_name
Görünüm:
def list(request):
charities = Charities.objects.all()
return render_to_response('charities_charity_list.html', {'charities': charities})
def add(request):
return add_or_edit(request)
def edit(request, charity_id):
return add_or_edit(request, charity_id)
def add_or_edit(request, charity_id=None):
print "ID = " + str(charity_id)
form = CharityForm(request.POST or None,
instance=charity_id and Charities.objects.get(pk=charity_id))
# Save new/edited student
if request.method == 'POST' and form.is_valid():
print form
form.save()
return HttpResponseRedirect('/charities/list/')
return render_to_response('charities_charity_edit.html', {'form': form})
Form:
class CharityForm(ModelForm):
class Meta:
model = Charities
Şablon:
senin şablon her zaman yeni Charity ekler görünüme deftere nakil çünkü{% extends "base.html" %}
{% block title %}Charities Add{% endblock %}
{% block content %}
<form method="post" action="/charities/add/" id="save"><table cellpadding="0">{{ form.as_table}}</table><input type="submit" value="Save"></form>
{% endblock %}
Merhaba Tiago, cevap verdiğiniz için teşekkürler. Daha önce generic_update/görüntülemeyi duymamıştım. Onları okuyacağım. Sadece mevcut yöntemin çalışmasını sağlamaya çalışarak, kimliği düzenleme URL'sine eklemek için kimliğini charity.id'den çıkaramıyorum. Ben de form.id denedim ama sadece bağlamda değil. Ayrıca, charities_app nedir? Bu sadece yerine koymak için bir yer tutucuya mı koyuyor? Üye görüşümde {% url race.members.views.edit member.id%} kullanmayı denedim ancak hata alıyorum ............... Oluşturulduğunda ViewDoesNotExist yakalandı: Modül yarışında ev .charities.views. – Rich
Aptalca üye/hayır kurumu kimliğini bağlam yoluyla geçirebileceğimi aptalca unuttum. Bu yüzden şimdi düzenleme URL'sinde kimliği var ve elbette çalışıyor. Teşekkürler. Şimdi, yalnızca işlem URL'sini {% url charities_app.views.edit charity.id%} örneğinize benzer şekilde nasıl değiştireceğimizi anlamaya çalışıyorum. Charities_app nedir. Manzaraya giden yol mu olmalı? get_absolute_url tanımlanmış mı olmalıyım? – Rich
Merhaba, bu durumda charities_app Charities modelini içeren uygulamanın adı olacaktır. charities_app.view.edit, yalnızca isteği işleyecek olan görünümün adıdır. Bu url etiketi, şablonlarınızdaki URL'leri sabitlemek zorunda olmadığınız için kullanışlıdır. Bu şekilde, urls.py dosyasındaki url eşlemelerini değiştirmeyi seçerseniz, şablonları güncellemenize gerek yoktur :) –