Я пытаюсь создать базу данных django, которая записывает все мои комические покупки, и я ударил несколько проблем. Я пытаюсь моделировать отношения между комической проблемой и художниками, которые работают над ней.
В комической проблеме есть один или несколько художников, работающих над этой проблемой, и художник будет работать над более чем одной проблемой. Кроме того, у исполнителя есть роль, связанная с тем, что они сделали с создателем комикса (вся работа над этим вопросом), писателем (написала script), ящиком (нарисовал полный комикс), карандаши, чернила, цвета или текст, и в данной роли может быть несколько исполнителей.
Это дает мне модель базы данных, например:
Затем переведите это в следующую модель Django. Поскольку мне требуются дополнительные данные об отношениях, я считаю, что для обработки отношений я должен использовать отдельный класс и удерживать дополнительные
class Artist(models.Model):
name = models.CharField(max_length = 100)
def __unicode__(self):
return self.name
class ComicIssue(models.Model):
issue_number = models.IntegerField()
title = models.TextField()
artists = models.ManyToManyField(Artist, through='IssueArtist')
def __unicode__(self):
return u'issue = %s, %s' % (self.issue_number, self.title)
class IssueArtist(models.Model):
roles = ( (0, "--------"),
(1, "Creator"),
(2, "Writer"),
(3, "Drawer"),
(4, "Pencils"),
(5, "Inks"),
(6, "Colours"),
(7, "Text"),
)
artist = models.ForeignKey(Artist)
issue = models.ForeignKey(ComicIssue)
role = models.IntegerField(choices = roles)
Мои вопросы:
1) Кажется ли это правильным способом моделирования этого?
2) Если я не использую функцию through='IssueArtist'
, я могу добавить отношения, используя функцию artists.add()
. Если я использую это, я получаю сообщение об ошибке 'ManyRelatedManager' object has no attribute 'add'
. Должен ли я вручную управлять отношениями, создавая экземпляры IssueArtist()
и явно просматривая таблицу отношений?
NB. Я использую Django 1.0, в настоящий момент