создать много-много отношений в оболочке - PullRequest
1 голос
/ 17 января 2012

вот моя модель:
Я хотел бы инициализировать его с помощью скрипта
Страница содержит шаблон

class Template(models.Model):
    Nom = models.CharField(max_length=200, blank=True)
    contenu = models. TextField(max_length=80000, blank=True)
    Note_divers = models.ManyToManyField('note.Note_divers', related_name='Template_Note_divers_notes_Note_divers', blank=True)

    def ___str__(self):
        return self.Nom

    def __unicode__(self):
        return self.Nom


class Page(models.Model):
    Template = models.ManyToManyField(Template, null=True, blank=True)
    self_url = models.ManyToManyField('lien.Lien', related_name='pages_lien_self', null=True, blank=True)
    Categorie = models.ManyToManyField(Categorie_Page, null=True, blank=True)
    Liens = models.ManyToManyField('lien.Lien', related_name="Liens sur la page", null=True, blank=True)
    Nom = models.CharField(max_length=200)

и мой скрипт инициализации:
Основной целью является создание определенных страниц

    import os

    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

    from django.db.models.loading import cache as model_cache

    if not model_cache.loaded:
        model_cache.get_models()

    from pages.models import Page, Template
    import settings

    t1 = Template(Nom="template_index",contenu="""bienvenue<br><a href="../logout/">logout</a>""")
    t1.save()
    p = Page(Nom="index",Template=t1)
    p.save()

    t2 = Template(Nom="template_indexvide", contenu="""
            <form method="post" action=".">{% csrf_token %}
            <input type="text" name="username">
            <input type="password" name="password">
            <input type="submit" value="login" />
            </form>"""
        )
    t2.save()
    p = Page(Nom="indexvide",Template=t2)
    p.save()

И это дало мне:

   TypeError: 'Template' is an invalid keyword argument for this function

С уважением Bussiere

1 Ответ

5 голосов
/ 17 января 2012

Вы не можете объявить ManyToMany при создании экземпляра.Сначала необходимо определить и сохранить экземпляр, а затем добавить отношения.

p = Page(nom="indexvide")
p.save()
p.templates.add(t2)

(Обратите внимание также на соглашения об именах: строчные буквы для полей, множественное число для многих ко многим.)

...