Martin Magakian
Martin Magakian

Reputation: 3766

Django inheritance

Please have a look:

class Categorie(models.Model):
    id = models.AutoField('id', primary_key=True)
    title = models.CharField('title', max_length=800)
    articles = models.ManyToManyField(Article)

class Article(models.Model):
    id = models.AutoField('id', primary_key=True)
        title = models.CharField('title', max_length=800)
    slug = models.SlugField()
    indexPosition = models.IntegerField('indexPosition', unique=True)

class CookRecette(Article):
    ingredient = models.CharField('ingredient', max_length=100)

class NewsPaper(Article):
    txt = models.CharField('ingredient', max_length=100)

So I created "CookRecette" and "NewsPaper" as "Article". I Also create a "Categorie" class who link to (manyToMany) "Article".

But in the admin interface, I can't link from "Categorie" to an "CookRecette"or "NewsPaper". Same from the code. Any help ?

Cheers,
Martin Magakian

PS: I'm so sorry but actually this code is correct! So everything is working fine, I can see my "CookRecette"or "NewsPaper" from "Categorie"

Upvotes: 0

Views: 248

Answers (2)

Ski
Ski

Reputation: 14487

NewsPaper has part of it as Article object. If you will create new NewsPaper object, you will see a new object in articles. So in admin interface, when managing Categories, you will be able to select any article, and some of them are NewsPaper.

You can add news paper to a category like this:

category = Categorie(title='Abc')
category.save()
news_paper = NewsPaper(slug='Something new', indexPosition=1, txt='...')
news_paper.save()
category.articles.add(news_paper)

You can retrieve news papers from specific category like this:

specific_category = Categorie.objects.get(title='Abc')
NewsPaper.objects.filter(categorie_set=specific_category)

Upvotes: 0

Dominic Santos
Dominic Santos

Reputation: 1960

I'll start by saying that you don't need to define the 'id' field, if you don't define it then Django will add it automatically.

Secondly, the CookRecette and NewsPaper objects are not linked to the Categorie object by any means (ForeignKey, OneToOne, OneToMany, ManyToMany) so they wouldn't be able to be accessed that way anyway.

After you have linked the models together in whichever way you wish, you might want to have a look at http://docs.djangoproject.com/en/1.2/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin which will show you how to quickly edit related objects in the Djano admin console.

Upvotes: 1

Related Questions