ここにはほとんどドキュメントがありません: http://docs.djangoproject.com/en/dev/ref/models/fields/#commaseparatedintegerfield
たぶん、誰かがDjangoにCommaSeparatedIntegerField
を入力する方法を教えてくれませんか?
-ありがとう。
Djangoのソースを見る...
class CommaSeparatedIntegerField(CharField):
def formfield(self, **kwargs):
defaults = {
'form_class': forms.RegexField,
'regex': '^[\d,]+$',
'max_length': self.max_length,
'error_messages': {
'invalid': _(u'Enter only digits separated by commas.'),
}
}
defaults.update(kwargs)
return super(CommaSeparatedIntegerField, self).formfield(**defaults)
その正規表現バリデーターを確認してください。整数とコンマのリストを指定する限り、Djangoは文句を言わないでしょう。
基本的には、charfieldと同じように定義できます。
class Foo(models.Model):
int_list = models.CommaSeparatedIntegerField(max_length=200)
次のように入力します。
f = Foo(int_list="1,2,3,4,5")
このフィールド がDjango 1.9 で非表示になっていることを追加します。 Django 1.9以降では、validators=[validate_comma_separated_integer_list]
付きのCharField
を使用する必要があります。
Django 1.9以降のバージョンで動作します
最初のステップ:-これをインポート(新しいバージョンでは変更される可能性があるため、再確認してください)
from Django.core.validators import validate_comma_separated_integer_list
2番目のステップ:-フィールドの書き込み
class RestaurantLocation(models.Model):
name = models.CharField(max_length=200)
location = models.CharField(max_length=200,null=True,blank=True)
category = models.CharField(max_length=200,null=True,blank=False)
choices_field = models.CharField(validators=[validate_comma_separated_integer_list],max_length=200, blank=True, null=True,default='')
def __str__(self):
return self.name
注:作成済みのデータベースに列を追加する場合は、必ずdefault = ''
を使用してください。それ以外の場合は、python manage.py migrate
の実行後に次のオプションを選択できます。
You are trying to add a non-nullable field 'choices_field' to restaurantlocation without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows with a
null value for this column)
2) Quit, and let me add a default in models.py
Select an option:
ハッピーコーディング!
私はたまたま私の最新のプロジェクトでCommaSeparatedIntegerFieldを処理しました。私はMySQLを使用していましたが、コンマ区切りの整数値の文字列を提供することは、非常にDBフレンドリーであるように見えました。 '1、2、3、4、5'。空白のままにする場合は、空の文字列を渡します。
CharFieldのように動作し、奇妙な方法で動作します。データベースの角かっこを含め、 "[1、2、3、4、5]"のような値になりました!気をつけて!