تغيير الحالة (العلوي / السفلي) على إضافة البيانات من خلال موقع الإدارة جانغو

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

  •  05-07-2019
  •  | 
  •  

سؤال

وأنا تكوين موقع الإدارة من مشروعي الجديد، ولدي شك بشأن الكيفية التي ينبغي أن أفعل، على ضرب 'حفظ' عند إضافة البيانات من خلال موقع الإدارة، يتم تحويل كل شيء إلى الحالة العلوي ...

وتحرير: طيب أنا أعرف الملكية .upper، وفعل II وجهة نظر، وأود أن أعرف كيف نفعل ذلك، ولكن أنا أتساءل إذا كان هناك أي ممتلكات المتاحة لتكوين الحقل على موقع الإدارة: P

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

المحلول

وإذا كان هدفك هو فقط أن الأمور تحويلها إلى الحالة العلوي عند حفظ في قسم الادارة، فأنت تريد أن <لأ href = "http://docs.djangoproject.com/en/dev/ref/contrib/ المشرف / # مضيفا خصيصا للتأكد من صحة-إلى-المسؤول "يختلط =" noreferrer "> إنشاء نموذج مع التحقق من صحة مخصصة لإجراء التغيير القضية:

class MyArticleAdminForm(forms.ModelForm):
    class Meta:
        model = Article
    def clean_name(self):
        return self.cleaned_data["name"].upper()

وإذا كان هدفك هو أن يكون دائما قيمة في الكبيرة، ثم يجب عليك <وأ href = "http://docs.djangoproject.com/en/dev/topics/db/models/#overriding-predefined-model- طرق "يختلط =" noreferrer "> تجاوز حفظ في مجال نموذج:

class Blog(models.Model):
    name = models.CharField(max_length=100)
    def save(self, force_insert=False, force_update=False):
        self.name = self.name.upper()
        super(Blog, self).save(force_insert, force_update)

نصائح أخرى

والمثال التحديث من وثائق توحي باستخدام وسائط، kwargs بالمرور على النحو التالي:

<اقتباس فقرة>   

وسوف جانغو، من وقت لآخر، توسيع قدرات المدمج في   أساليب النموذج، إضافة حجج جديدة. إذا كنت تستخدم وسائط *، ** kwargs في   تعريفات الأسلوب الخاص بك، ويضمن لك من شأنها أن التعليمات البرمجية   دعم تلقائيا تلك الحجج عند إضافتها.

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

    def save(self, *args, **kwargs):
        do_something()
        super(Blog, self).save( *args, **kwargs) # Call the "real" save() method.
        do_something_else()

حفظ ( ) . مثال من وثائق:

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

    def save(self, force_insert=False, force_update=False):
        do_something()
        super(Blog, self).save(force_insert, force_update) # Call the "real" save() method.
        do_something_else()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top