SORU
11 Mayıs 2009, PAZARTESİ


Nasıl Django model sayısal bir alanın maksimum değeri sınırlamak için?

Django çeşitli sayısal alanlar modelleri vardır, *örneğin 8* PositiveIntegerField. Eski ondalık saklı sayısı ve karakter toplam sayısı sınırlı olmasına rağmen, depolamak için sınırlamak için herhangi bir yolu yoktursadecebelirli bir aralıktaki sayıları, örneğin 0.0-5.0 ?

Bu olmadığı takdirde, örneğin, sadece numaraları için bir PositiveİntegerField 50 sınırlamak için herhangi bir yolu var mı?

Hata 6845 has been closed, Bu StackOverflow gereksiz bir soru olabilir. güncelleme: - sampablokuper

CEVAP
11 Mayıs 2009, PAZARTESİ


Ayrıca özel model alan bir tür - http://docs.djangoproject.com/en/dev/howto/custom-model-fields/#howto-custom-model-fields bakın oluşturabilirsiniz

Bu durumda, sen-ebil 'miras' dan dahili ve doğrulama mantığını İntegerField geçersiz kılar.

Daha fazla bu konuda sanırım, bu ne kadar faydalı birçok Django uygulamaları için olacağının farkındayım. Belki İntegerRangeField bir tür Django geliştiriciler dalına eklemeyi düşünün için bir yama olarak sunulmamıştır.

Bu benim için çalışıyor:

from django.db import models

class IntegerRangeField(models.IntegerField):
    def __init__(self, verbose_name=None, name=None, min_value=None, max_value=None, **kwargs):
        self.min_value, self.max_value = min_value, max_value
        models.IntegerField.__init__(self, verbose_name, name, **kwargs)
    def formfield(self, **kwargs):
        defaults = {'min_value': self.min_value, 'max_value':self.max_value}
        defaults.update(kwargs)
        return super(IntegerRangeField, self).formfield(**defaults)

Model sınıfında, bu alana yukarıdaki kodu nereye koyduğunuzu modülü) gibi kullanırsınız:

size = fields.IntegerRangeField(min_value=1, max_value=50)

YA da olumsuz bir dizi için ve olumlu (osilatör aralığı gibi):

size = fields.IntegerRangeField(min_value=-100, max_value=100)

Gerçekten harika olur eğer böyle işletmecinin ile denilebilir.

size = fields.IntegerRangeField(range(1, 50))

Ama, bu bir 'atla' parametre aralığı(1, 50, 2) - İlginç bir fikir olsa da... . belirleyebilirsiniz beri çok daha fazla kod gerektirir

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alfredo Garcia

    Alfredo Garc

    25 Mayıs 2007
  • Damien Walters

    Damien Walte

    20 AĞUSTOS 2006
  • FrameCityJackal

    FrameCityJac

    4 Aralık 2010