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

2024-09-29 20:29:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个叫做“艺术家”的课程,这是一个艺术家的档案

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)

如何将“艺术家”类绘画放在我看到的每个艺术家的“艺术家”对象中(我得到
def get_absolute_url(self): return f'/artist/{self.id}' )它对每个图像都有描述吗


Tags: nonedefaultmodelartistmodelslengthdescmax
1条回答
网友
1楼 · 发布于 2024-09-29 20:29:07

这是一个关系,ManyToOne,对于每个Artist都有许多PaintingManyToOne关系被称为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")
  • 相关的名字是什么

    artist是一个类变量,从Painting实例调用artist变量是通过使用painting_instance.artist,如果我们想要获得与艺术家相关联的Painting,它是通过使用artist_instance.related_name来实现的,在这种情况下,它是artist_instance.paintings,如果您没有指定related_name,默认情况下它将是painting_qsreverse relation,我是指.paintings,使用related_name="+"

  • 什么是CASCASE

    这是一个基本的SQL短语,意思是当Artist被删除时,也删除他的Painting

有关ForiegnKey的更多详细信息,请参阅this answer

相关问题 更多 >

    热门问题