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

  • Hak5DarrensVlog

    Hak5DarrensV

    11 EYLÜL 2009
  • snookie77

    snookie77

    2 Mart 2006
  • trickycharms

    trickycharms

    6 Aralık 2013