2010-06-15 21 views
10

Bir modeli güncellemek için kullandığım bir model formum var.Yalnızca Django model formundaki belirli alanları nasıl güncelleyebilirim?

class Turtle(models.Model): 
    name = models.CharField(max_length=50, blank=False) 
    description = models.TextField(blank=True) 

class TurtleForm(forms.ModelForm): 
    class Meta: 
     model = Turtle 

Bazen tüm modeli güncellemeye ihtiyacım yok, ancak yalnızca alanlardan birini güncellemek istiyorum. Bu yüzden POST formunu açtığımda, sadece açıklama için bilgi var. Bunu yaptığımda model hiçbir zaman kaydedilmiyor çünkü isminin boş bırakıldığını düşünürken amacım ismin değişmemesi ve sadece modelden kullanılması.

turtle_form = TurtleForm(request.POST, instance=object) 
    if turtle_form.is_valid(): 
     turtle_form.save() 

Bunun gerçekleşmesi için herhangi bir yolu var mı? Teşekkürler!

cevap

9

sadece onaylı alanlar:

class FirstModelForm(forms.ModelForm): 
    class Meta: 
     model = TheModel 
     fields = ('title',) 
    def clean_title(self.... 

Bkz http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#controlling-which-fields-are-used-with-fields-and-exclude

Farklı özelliklere ihtiyaç duyduğunuzda farklı görünümlerde bir model için farklı ModelForms kullanmak yaygındır.

class SecondModelForm(FirstModelForm): 
    class Meta: 
     model = TheModel 
     fields = ('title', 'description') 
+0

Teşekkürler. Bu yöntemle ilgili güzel olan şey, sadece şablonun doldurulması için tüm formu göndermem gerektiğidir ve daha sonra gönderdiğim şeye göre farklı formlar seçebilirim. –

1

Eğer bir alanı güncelleştirmek Meta exclude başlığın üzerinden formdan kaldırmak için istemiyorsanız:

class Meta: 
    exclude = ('title',) 
+0

Bu tam yapmak istediğim şey değildir: Yani aynı davranışı kullanan model için başka bir form (diyelim clean_<fieldname> yöntemleri vs.) kullanmak yaratır. Tek bir TurtleForm'um var ve sayfadaki bir noktada sadece açıklamaya sahip olmak istiyorum ve bir başka noktada tam forma sahip olmak istiyorum. Bu mümkün mü yoksa iki farklı forma bölünmeli mi? –

İlgili konular