جانغو مشرف: جعل الحقول الإلزامية حيوي غير إلزامية

StackOverflow https://stackoverflow.com/questions/1407160

  •  05-07-2019
  •  | 
  •  

سؤال

وكيف يمكنني أن أجعل حقول إلزامية غير إلزامية عندما أخرى [المرتبطة بها] مجال له قيمة معينة؟

لنفترض لدي النماذج التالية:

class foo(models.Model):
    bar = models.CharField(max_length=200)
    foo_date = models.DateTimeField()

وعندما إنقاذ، ويحتوي على بار قيمة معينة، أود foo_date لتصبح غير إلزامية. كيف يمكنني تحقيق ذلك؟ شكرا.

هل كانت مفيدة؟

المحلول

وT.Stone هو حق. هذا هو كيف نفعل ذلك مع نموذج نموذج:

class foo(models.Model):
    bar = models.CharField(max_length=200)
    foo_date = models.DateTimeField()

class ClientAdmin( MyModelAdmin ):
    form = FooModelForm

class FooModelForm( forms.ModelForm ):

    def clean(self):
        cleaned_data = self.cleaned_data
        if cleaned_data.get("bar") == 'some_val' and not cleaned_data.get('foo_date'):
            msg = 'Field Foo Date is mandatory when bar is some_val'
            self._errors[field] = ErrorList([msg])
            del cleaned_data[field]
        return cleaned_data

<وأ href = "http://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other" يختلط = " noreferrer نوفولو "> http://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other

نصائح أخرى

وأعتقد أنه سيكون مجرد مسألة وضع foo_barr إلى فارغة = صحيح، ومن ثم تنفيذ نموذج والمخصصة الخاصة بك التحقق من صحة لنموذج مشرف للاستخدام. ترى هذا جزءا من الوثائق - <وأ href = "http://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin" يختلط = "نوفولو noreferrer "> إضافة التحقق من صحة مخصصة إلى admin

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top