0
class Business(models.Model):
    is_distributor = models.BooleanField()

class Invoice(models.Model):
    from_business = models.ForeignKey(Business)
    to_business = models.ForeignKey(Business)

有効にするには、Invoice.from_business.is_distributor を True にする必要があります。これは clean() で実行できますが、このエラーは特定の from_business フィールドではなく、モデル全体に​​関係しています。

また、バリデーターを ForeignKey フィールドにフックできるとは思いません。

4

1 に答える 1

2

外部キー フィールドのインスタンスに簡単にアクセスし、cleanメソッドを使用してプロパティを検証できます。

from django import forms

from your_app.models import Invoice


class InvoiceForm(forms.ModelForm):
    def clean(self):
        cleaned_data = self.cleaned_data()

        business = cleaned_data.get('business')
        if not business.is_distributor:
            self._errors['business'] = self.error_class(
                ['Business must be a distributor.'])
            del cleaned_data['business']

        return cleaned_data
于 2013-10-21T17:27:48.660 に答える