Django:如何在类内添加模型类或引用?

问题描述 投票:1回答:2

我有一个叫做Artist的类,它是一个艺术家的个人资料

class Artist_object(models.Model):
    surname = models.CharField(max_length=120)
    name = models.CharField(max_length=120)
    Biography = models.TextField(default='Bitte Biography eingfügen', null=False)

现在我希望这位艺术家可以有多幅带有描述的画。

class Artist_painting(models.Model):
    painting1 = models.ImageField()
    painting1_desc = models.CharField(max_length=120, default=None)
    painting2 = models.ImageField()
    painting2_desc = models.CharField(max_length=120, default=None)

如何将类Artist_painting放到我查看的每个艺术家的Artist_object中(我得到了def get_absolute_url(self): return f'/artist/{self.id}')每个图片都有说明吗?

python django
2个回答
0
投票

您引用的模型带有ForeignKey [Django-doc]

ForeignKey

您可以使用class Artist(models.Model): surname = models.CharField(max_length=120) name = models.CharField(max_length=120) biography = models.TextField(default='Bitte Biography eingfügen') class Painting(models.Model): painting = models.ImageField() description = models.CharField(max_length=120, null=True, default=None) artist = models.ForeignKey( 'Artist', related_name='paintings', on_delete=models.CASCADE )访问PaintingArtist对象。


0
投票

[这是一个关系,some_artist.paintings.all(),每个ManyToOne有很多Painting,因此Artist关系被称为ManyToOne,因为ForiegnKey本身是Artist的关键,每个Painting只有一个Painting

Artist
  • 相关名称是什么?

    class Artist(models.Model): """ no need to call it Artist_object, Stick with pep8 (ArtistObject) or better yet, Artist only because it's an object anyways. """ surname = models.CharField(max_length=120) name = models.CharField(max_length=120) Biography = models.TextField(default='Bitte Biography eingfügen', null=False) class Painting(models.Model): """ Same naming rules apply """ artist = models.ForiegnKey(Artist, on_delete=models.CASCASE, related_name="paintings") 是一个类变量,通过使用artistartist实例中调用Painting变量,如果我们想获得与艺术家相关联的painting_instance.artist,那是通过使用Painting ],在这种情况下为artist_instance.related_name,如果您未指定artist_instance.paintings,则默认为related_name,如果您不想访问painting_qs,我的意思是[ C0],请使用reverse relation

  • 什么是.paintings

    这是一个基本的SQL短语,这意味着当related_name="+"被删除时,也要删除其CASCASE

请参阅Artist以获取有关Painting的更多详细信息

© www.soinside.com 2019 - 2024. All rights reserved.