У меня есть follwing две таблицы:Как добавить ManyToManyField в существующую модель django?
class Visit(models.Models):
date_created = models.DateTimeField(auto_now_add=True)
date_modified = models.DateTimeField(auto_now=True)
date_started = models.DateTimeField(null=True, blank=True)
date_completed = models.DateTimeField(null=True, blank=True)
# Here i want to add ManyToManyField
research = ManyToManyField(ResearchProtocol) #Here i will write for adding the field
class ResearchProtocol(models.Model):
title = models.CharField(max_length=30)
description = models.TextField()
start_date = models.DateField()
end_date = models.DateField()
def __unicode__(self):
return '%s' % self.title
Для этого я написал SQL запросов:
CREATE TABLE "visit_visit_research" (
"id" serial NOT NULL PRIMARY KEY,
"visit_id" integer NOT NULL REFERENCES "visit_visit" ("id") DEFERRABLE INITIALLY DEFERRED,
"research_id" integer NOT NULL REFERENCES "www_researchprotocol" ("id") DEFERRABLE INITIALLY DEFERRED,
UNIQUE ("visit_id", "research_id")
)
;
Когда я выполнить этот файл в поле создается каким-то образом, но когда я открываю ВИСТ администратора и нажмите к определенному идентификатору, который приводит к изменению формы, это дает мне следующую ошибку:
http://localhost:8000/admin/visit/visit/20/
Exception Type: DatabaseError at /admin/visit/visit/20/
Exception Value: column visit_visit_research.researchprotocol_id does not exist
LINE 1: ...visit_research" ON ("www_researchprotocol"."id" = "visit_vis...
^
Кто-то сказал, что вам нужно на юг и это невозможно сделать без юга. Это единственное решение? Я использую Django 1.3.1, Python 2.7.2.
Может ли кто-нибудь вести меня, какую ошибку я делаю? Любая помощь будет оценена по достоинству.
Заранее спасибо.
Hi Daniel. Вы пишете, я сделал эту глупую ошибку в frustation.I также проверил ее, используя python manage.py sql appname. Наконец сделал это правильно. Я хотел бы спросить одну вещь, почему django создает внешний ключ после создания sql-запроса ManyToManyField. Поэтому, наконец, мы не требуем юга. Я очень нервничаю, когда добавляю это поле в сервер, и я не хочу никаких проблем там. Спасибо Daniel –