تغيير الحالة (العلوي / السفلي) على إضافة البيانات من خلال موقع الإدارة جانغو
سؤال
وأنا تكوين موقع الإدارة من مشروعي الجديد، ولدي شك بشأن الكيفية التي ينبغي أن أفعل، على ضرب 'حفظ' عند إضافة البيانات من خلال موقع الإدارة، يتم تحويل كل شيء إلى الحالة العلوي ...
وتحرير: طيب أنا أعرف الملكية .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()