Порядок в отношениях многих ко многим в модели Джанго - PullRequest
4 голосов
/ 23 мая 2010

Я пишу небольшой сайт, чтобы хранить написанные мною бумаги. Относительные документы <-> author важны, но важен также порядок имен авторов (первый автор, второй и т. Д.)

Я только учусь Джанго, поэтому я мало что знаю. В любом случае до сих пор я сделал:

from django.db import models

class author(models.Model):
    Name = models.CharField(max_length=60)
    URLField = models.URLField(verify_exists=True, null=True, blank=True)

    def __unicode__(self):
        return self.Name

class topic(models.Model):        
    TopicName = models.CharField(max_length=60)
    def __unicode__(self):
        return self.TopicName

class publication(models.Model):
    Title           = models.CharField(max_length=100)
    Authors         = models.ManyToManyField(author, null=True, blank=True)
    Content         = models.TextField()
    Notes           = models.TextField(blank=True)
    Abstract        = models.TextField(blank=True)
    pub_date        = models.DateField('date published')
    TimeInsertion   = models.DateTimeField(auto_now=True)
    URLField        = models.URLField(verify_exists=True,null=True, blank=True)
    Topic           = models.ManyToManyField(topic, null=True, blank=True)

    def __unicode__(self):
        return self.Title

Это прекрасно работает в том смысле, что я теперь могу определить, кто авторы. Но я не могу их заказать. Как мне это сделать?

Конечно, я мог бы добавить ряд отношений: первый автор, второй автор, ... но это было бы некрасиво и не было бы гибким. Есть идея получше?

Спасибо

1 Ответ

6 голосов
/ 23 мая 2010

Вы можете добавить сквозную модель к этой связи ManyToMany и в этой модели сохранить значение, показывающее порядок, в котором автор должен прийти в этой конкретной ассоциации с публикацией.

(Дополнительный совет - это может помочь вам - с точки зрения ясности - использовать начальные заглавные буквы для имен классов / моделей и хранить строчные буквы для атрибутов и экземпляров / объектов - таким образом, если вы делитесь кодом с другими , это будет проще, так как это общий шаблон)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...