开发者

Django inheritance

开发者 https://www.devze.com 2023-02-14 12:52 出处:网络
Please have a look: class Categorie(models.Model): id = models.AutoField(\'id\', primary_key=True) title = models.CharField(\'title\', max_length=800)

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 C开发者_如何学GoookRecette(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"


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.


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)
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号