私はdjangoカスタムフィールドを開発しています。カスタム フィールド定義内で、別のフィールドを保存するコードをどのように記述できますか? たとえば、カスタム フィールドの定義内で、pre_save メソッドを記述しましたが、他のモデル フィールドに値を割り当てた後、model_instance.save() メソッドを呼び出しましたが、無限ループになりました。これを行う方法を教えてもらえますか?
class FullNameField(models.CharField):
def contribute_to_class(self, cls, name):
firstname_field = models.CharField(
null=True, blank=True, max_length=50)
lastname_field = models.CharField(
null=True, blank=True, max_length=50)
firstname_field.creation_counter = self.creation_counter
lastname_field.creation_counter = self.creation_counter
cls.add_to_class('firstname', firstname_field )
cls.add_to_class('lastname', lastname_field )
super(FullNameField, self).contribute_to_class(cls, name)
上記のコードは、syncdb 中に新しいフィールドの firstname と lastname を正常に作成します。やりたいことは、fullnamefield を入力するときに、firstname と lastname も入力する必要があることです。この fullname ロジックは単なる例ですが、要件は同じです。