Создал модель с Property, примерно такую
class A(models.Model)
...
def token_get(self):
return getattr(self.lead, 'token', None)
def token_set(self, value):
try:
lead = Lead.objects.get(token=value)
self.lead = lead
return self.lead.pk
except:
return False
def token_del(self):
self.lead = None
token = property(token_get, token_set, token_del)
Если работать с этим свойством через экземпляр, то все ок. Во вьюхе делаю форму
class OrderSetForm(ModelForm):
class Meta:
model = Order
fields = [ 'token',]
Но форма ругается, что нет такого поля token.
Тогда пробую такой вариант
class OrderSetForm(ModelForm):
token = forms.IntegerField()
class Meta:
model = Order
Тогда форма не ругается, все ок и даже в cleaned_data свойство token есть. Но при сохранении формы token_set не вызывается. Как это поправить, чтобы без костылей?
Я решил, что может так
def clean_token(self):
self.instance.token = self.cleaned_data.get("token")
Но по-моему это костыльно =(