I am trying to make one of my model objects a ManyToMany Field, so I can access the objects through both models.
I am receiving the following error.
listing = models.ManyToMany(Listings, blank=True, related_name="listing")
AttributeError: module 'django.db.models' has no attribute 'ManyToMany'
models.py
class WatchList(models.Model):
listing = models.ManyToMany(Listings, blank=True, related_name="listing")
user = models.ForeignKey(User, on_delete=models.CASCADE, default="")
>Solution :
The name of the field is a ManyToManyField [Django-doc], so this includes the …Field in ManyToManyField:
from django.conf import settings
class WatchList(models.Model):
listing = models.ManyToManyField(Listings, blank=True, related_name='watchlists')
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
Note: It is normally better to make use of the
settings.AUTH_USER_MODEL[Django-doc] to refer to the user model, than to use theUsermodel [Django-doc] directly. For more information you can see the referencing theUsermodel section of the documentation.
Note: The
related_name=…parameter [Django-doc]
is the name of the relation in reverse, so from theListingsmodel to theWatchlist
model in this case. Therefore it (often) makes not much sense to name it the
same as the forward relation. You thus might want to consider renaming therelation tolistingwatchlists.
Note: normally a Django model is given a singular name, so
Listinginstead of.Listings