我有調查問卷應用程序,允許動態創建表單。在我目前的系統中,我將它鏈接到一個項目。這是我的模型的一個例子。我想在我當前的django項目中完全從其他應用程序的依賴關係中分離問卷應用程序。通過URL鏈接Django ContentType框架
#project.models
class Project(models.Model):
name = models.CharField(max_length.....
category = models.CharField(max_length
question_sets = models.ManyToManyField(Question_Set)
#questionnaire.models
class Question(models.Model):
question = models.CharField(max_length....
question_type = models.IntegerField(choices=.....
class Question_set(models.Model):
name = models.CharField(....
questions = models.ManyToManyField(Question)
在我的問卷調查視圖裏面,對於這個例子,我有兩個基本的函數Question_set create和Question create。在Question_set創建函數中,我有一個表單,允許我將創建的問題添加到Question_set,然後保存Question_set。目前,我還通過在URL中PROJECT_ID這一觀點,所以我可以得到項目實例,將Question_set
#questionnaire.views
def question_set_create(request, project_id, form_class=AddSetForm, template_name=....):
if request.method = "POST":
form = form_class(request.POST)
if form.is_valid():
set = form.save()
project = Project.objects.get(id=project_id)
project.question_sets.add(set)
....
#questionnaire.urls
#pattern for question_set_create
url(r'^(?P<project_id>[-\w]+)/add_set/$', 'questionnaire_create' , name="project_questionnaire_create"),
我相信,解決方案涉及Django的ContentType框架,但我不知道去了解的最佳方式通過url傳遞模型類。所以如果Question_set被保存到Foo模型而不是Project。如何在URL中識別模型類?
感謝。我不熟悉generic.GenericRelation。每天學些新東西。我要檢查出 – 2011-01-25 14:48:30