[Fixed]-Enforce at least one value in a many-to-many relation, in Django?


You can’t enforce this on at the model level as @Greg details, but you can enforce it on a form by simply making the field required. This won’t prevent anyone with shell-level access from manually creating a UserProfile without a foo, but it will force anyone using a browser-based form method of creation.


Unfortunately, I don’t think this is possible at the model level because ManyToMany data is saved separately from other model fields. You should be able to enforce it at the admin level by specifying a custom form, and writing a clean() method on the form.


Leave a comment