1

使用下面的 django 文档示例,如果我有类似的模型设置,它将看起来像这样。但是查看专辑应用程序,它可以用于我的其他事情,如果我创建了一个新的应用程序摄影师,对我来说问题将是 ForeignKey添加专辑我将如何实现这一点,专辑对不同的人或背景意味着不同的事物

class Musician(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    instrument = models.CharField(max_length=100)

class Album(models.Model):
    artist = models.ForeignKey(Musician)
    name = models.CharField(max_length=100)
    release_date = models.DateField()
    num_stars = models.IntegerField()

class Photographer(models.Model):
    # some stuff here
4

2 回答 2

0

将对象与任何其他对象相关联的一种方法是使用通用关系。

有关如何完成此操作的示例,请参见:https ://docs.djangoproject.com/en/1.4/ref/contrib/contenttypes/#generic-relations。

泛型很好,因为你可以避免具体的继承,除非你需要它。

于 2013-01-01T13:05:31.567 回答
0

您可以使用简单的模型继承来执行此操作,如下所示:

class Musician(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    instrument = models.CharField(max_length=100)

class Photographer(models.Model):
    # some stuff here    

class Album(models.Model):
    name = models.CharField(max_length=100)
    release_date = models.DateField()
    num_stars = models.IntegerField()

class PhotoAlbum(Album):
    artist = models.ForeignKey(Photographer)

class MusicAlbum(Album):
    artist = models.ForeignKey(Musician)    
于 2013-01-01T13:05:31.953 回答