Lütfen aşağıdaki kodu inceleyin. Temel olarak, kullanıcı bu sınıfın bir nesnesini oluşturduğunda, value_type
belirtmelidir. . Temelde bir atar - value_type==2
(yüzde), daha sonra formu/şablonu tarafında bir CheckboxSelectMultiple olan percentage_calculated_on
(model doğrulama ben çalışıyorum gibi bana doğrulamak için izin vermiyor bir veya daha fazla öğe kontrol edilmesi gerekmez bir çoktan çoğa ilişkiden önce bir birincil anahtar değere sahip olması gerektiğini söyleyen istisna. Ama önce kaydetmeden önce nesneyi doğrulamam gerekiyor.bu formda (validasyon formu) bu doğrulamayı denedim. (formun temiz yöntemini kullanarak), ama aynı şey orada da olur.django manytomany doğrulama
Bu doğrulama elde etme konusunda gitmek nasıl?
INHERENT_TYPE_CHOICES = ((1, 'Payable'), (2, 'Deductible'))
VALUE_TYPE_CHOICES = ((1, 'Amount'), (2, 'Percentage'))
class Payable(models.Model):
name = models.CharField()
short_name = models.CharField()
inherent_type = models.PositiveSmallIntegerField(choices=INHERENT_TYPE_CHOICES)
value = models.DecimalField(max_digits=12,decimal_places=2)
value_type = models.PositiveSmallIntegerField(choices=VALUE_TYPE_CHOICES)
percentage_calculated_on = models.ManyToManyField('self', symmetrical=False)
def clean(self):
from django.core.exceptions import ValidationError
if self.value_type == 2 and not self.percentage_calculated_on:
raise ValidationError("If this is a percentage, please specify on what payables/deductibles this percentage should be calculated on.")
Manoj Govindan'ın cevabını, problemi çözdüğü için "kabul edildi" olarak işaretledim. Ancak, yine de Django'nun model doğrulamasını kullanarak doğrulanmasını isterim. Yani, herhangi bir fikri varsa, burada yayınlamak için çaba sarf et. Teşekkürler. – chefsmart
aynı soru: http://stackoverflow.com/questions/7986510/django-manytomany-model-validation – user920391