1

このようにdjangoモデルコンストラクターでデフォルト値を設定しています

class Student(models.Model):
  name = models.TextField()
  location = models.TextField()
   def __init__(self, *args, **kwargs):
        self.location="sample"
        super(Student, self).__init__(*args, **kwargs)

現在、管理フォームの場所フィールドを除外しています。しかし、StudentAdminでこれを行う場合

   def save_model(self, request, obj, form, change):

        raise Exception(obj.location)

それからそれは空としてcommigです

4

2 に答える 2

1

djangoには、デフォルト値を設定する独自の方法があります。

class Student(models.Model):
    name = models.TextField()
    location = models.TextField(default="sample")

編集1:

djangoはインスタンスを再度初期化するため、値は上書きされます。順序を変更すると役立つ場合があります。

def __init__(self, *args, **kwargs):        
    super(Student, self).__init__(*args, **kwargs)
    self.location="sample"

でも。

Djangoの組み込み機能に依存し、名前付きパラメーターを渡すのが最も簡単な方法です。 djangoモデルで使用する__init__関数を作成する

于 2013-03-19T03:51:47.370 に答える
0

model field引数を使用してdefault、デフォルト値を設定します。フィールドをどの形式でも編集できないように除外すると、デフォルト値が使用されます。

デフォルトを変更したい場合にのみsaveメソッドをオーバーライドする必要があります。モデルまたはフォームでまだ変更していない場合は、saveメソッドを設定します。

于 2013-03-19T04:23:02.130 に答える