#1299 closed defect (fixed)
ManyToManyField does not create set methods in auth.User model
| Reported by: | Owned by: | Adrian Holovaty | |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | |
| Severity: | normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
I have a model in my application which has a many-to-many relationship with Django's auth.User model:
from django.models.auth import User
class Category(meta.Model):
name = meta.SlugField(maxlength=30, unique=True)
desc = meta.CharField(maxlength=50)
watchers = meta.ManyToManyField(User, related_name="watched_category")
Running help() on an instance of the User model shows that the appropriate get_vault_watched_category*() (the name of my app is "vault") methods were created, but no set_vault_*() method is there. I can only modify the many-to-many relation from the Category side of things.
Note:
See TracTickets
for help on using tickets.
The reverse
set_*methods are only created for related models in the same app, but this behavior is fixed in the magic-removal branch (which will be rolled into Django's next version). If you need this functionality right away, you can remove this statement on line 57 of django/models/init.py in the current Django (and unindent the subsequent three lines):if related.opts.app_label == klass._meta.app_label: