我有一个叫做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}'
)每个图片都有说明吗?
您引用的模型带有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
)
访问Painting
的Artist
对象。
[这是一个关系,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")
是一个类变量,通过使用artist
从artist
实例中调用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
的更多详细信息