Johnniekf
Johnniekf

Reputation: 67

Django view for link table

I have three tables in my model:

class Recipe(models.Model):
    title = models.CharField(max_length=200)
    excerpt = models.TextField(null=True)
    category = models.CharField(max_length=10, default='FoodGroup')
    cookTime = models.CharField(max_length=20, default='15Min')
    prepTime = models.CharField(max_length=20, default='5Min')
    process = models.TextField(null=True)
    slug = models.SlugField(max_length=100, unique=True)
    updated = models.DateTimeField(auto_now=True)
    published = models.DateTimeField(default=timezone.now)

def get_absolute_url(self):
    return reverse('recipe:single', args=[self.slug])

class Meta:
    ordering = ['-published']

def __str__(self):
    return self.title


class Ingredient(models.Model):
    IngName = models.CharField(max_length=30)
    IngType = models.CharField(max_length=20, null=True)

def __str__(self):
    return self.IngName


class RecipeIngredients(models.Model):
    ingredient = models.ForeignKey(Ingredient, on_delete=models.CASCADE)
    recipe = models.ForeignKey(Core, on_delete=models.CASCADE)

And the view looks like this:

class RecipeView(ListView):
    model = RecipeIngredients
    template_name = 'core/recipes.html'
    context_object_name = 'recipe'

I'm trying to then view this data using a for loop:

    {% for recipe in recipe %}
    {{ recipe.title }}
    {% endfor%}

but nothing gets pulled using this method, I've tried looking at the docs but I'm unsure I'm doing this in the best way? I had a look at the many-to-many section of the Docs but I thought a link-table may be more appropriate for my scenario.

edit for anyone else having similar issues:

Using Django's ManyToMany model function ended up being more appropriate: https://docs.djangoproject.com/en/3.0/topics/db/examples/many_to_many/

Upvotes: 0

Views: 56

Answers (1)

Dmitry Shevchenko
Dmitry Shevchenko

Reputation: 478

The name of your iterable must be different from context_object_name.

Try different name like:

{% for diff_name in recipe %}
    {{ diff_name.title }}
{% endfor%}

Upvotes: 1

Related Questions