2014-01-12 1 views
1

Я получил много-ко-многим из модели под названием Resource к себе через промежуточную модель под названием RelatedResource:Несколько ForeignKeys через модели для многих ко многим отношению к той же модели

class Resource(TimeStampedModel): 
    title = models.CharField(max_length=100, unique=True) # book title, person's name, video title, etc. 
    description = models.TextField(max_length=500, null=True, blank=True) 
    link = models.URLField(max_length=500, blank=True, null=True) # dynamically generated for youtube and amazon; todo: uniqueness 
    resourceID = models.CharField(max_length=20, blank=True, null=True) # todo: uniqueness 
    picture = models.URLField(max_length=500, blank=True) 
    tags = TaggableManager() 
    ... 

class RelatedResource(models.Model): 
    input = models.ForeignKey(Resource, related_name="input_resource") 
    output = models.ForeignKey(Resource, related_name="output_resource") 
    input_affiliate = models.ForeignKey(Resource, related_name="while_with", blank=True, null=True) 
    reason = models.CharField(max_length=500) 
    ... 

Django жалуется, что наличие более двух внешних ключей к ресурсу неоднозначно, конечно, потому что тогда он не знает, какие два из трех полей ForeignKey применяются в отношении «многие ко многим».

Есть ли способ сохранить все 3 поля ForeignKey в промежуточной модели и рассказать Django, которые 2 предназначены для отношения «многие ко многим»?

ответ

0

Я думаю, что вы пытаетесь сделать это рекурсивные отношения. Описывается здесь. https://docs.djangoproject.com/en/1.6/ref/models/fields/#recursive-relationships

И здесь. Django recursive relationship

+0

Кажется, что рекурсивные отношения - это много-к-одному. Мне нужен M2M. Я закончил тем, что избавился от отношений M2M и сохранил отношения 3 ForeignKey. Пока все работает. – m52go

Смежные вопросы