Is this correct?
class Customer(models.Model):
account = models.ForeignKey(Account)
class Order(models.Model):
account = models.ForeignKey(Account)
customer = models.ForeignKey(Customer, limit_choices_to={'account': 'self.account'})
I'm trying to make sure that an Order form will only display customer choices that belong to the same account as the Order.
If I'm overlooking some glaring bad-design fallacy, let me know.
The main thing I'm concerned with is:
limit_choices_to={'account': 'self.account'}
The only answer to 'is it correct' is 'does it work when you run it?' The answer to that of course is no, so I don't know why you're asking here.
There's no way to use limit_choices_to dynamically to limit based on the value of another field in the current model. The best way to do this is by customising the form. Define a ModelForm subclass, and override the
__init__
method:You should set
choices
field of your order form (inherited fromModelForm
) in the constructor.limit_choices_to={'account': 'self.account'}
is wrong, since foreign key to customer cannot point toAccount
.