Thursday, September 29, 2011

ManyToMany problem

Hello,

 

I have created my own ManyToMany table, but am getting an error when I attempt to get a related item from one of my Models. Any insight would be greatly appreciated.  I am on Django 1.3.1. models/restuarant_hood_map.py

<import restaurant and hood>
class RestaurantHoodMap(models.Model):
    restaurant = models.ForeignKey(Restaurant)
    hood = models.ForeignKey(Hood)

    class Meta:
        db_table="restaurant_hood_map"
        app_label="delivery"

 

 

Error:

AttributeError at <URL>
'str' object has no attribute '_default_manager'

 

models/hood.py

class Hood(models.Model):
    name = models.CharField(unique=True)
    restaurants=models.ManyToManyField("restaurant.Restaurant", through="restaurant_hood_map.RestaurantHoodMap")

    class Meta:
        db_table = "hoods"
        app_label="delivery"

 

models/restaurant.py

class Restaurant(models.model):
    name=models.ForeignKey(CompanyName)
    is_active=models.BooleanField(default=True)
    hoods=models.ManyToManyField("hood.Hood", through="restaurant_hood_map.RestaurantHoodMap")

    class Meta:
        db_table="restaurants"
        app_label="delivery"

 

Now, I know what the problem is.....when I attempt to get the related restaurants off of Hood, I am getting this error. That's because it's treating the "restaurant.Restaurant" as a string value. However, I thought it was accepted to use string values in order to avoid circular dependencies? At least thats what I thought from the docs:

https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey

However, that doesn't seem to work when you get a Hood object and do hood.restaurants....it barfs.

 

Thanks for the help!

No comments:

Post a Comment