感谢 Yuji Tomita 提供了非常彻底的回答,我的最终解决方案非常接近他的建议,但差异很大,以至于我认为如果其他人遇到与我相同的情况,我会将其作为另一种选择发布。
首先在我的mysite.apps.feedback.models
文件中我放
class Feedback( models.Model ):
subject = models.TextField( max_length=100 )
body = models.TextField( max_length=100 )
# Some other stuff here...
# Finally I used the suggestion above and created a field which I
# use to label each entry as belonging to a specific instance of the app.
instance_name = models.TextField( max_length=20 )
在我的mysite.apps.feedback.views
文件中,我放了
def save_message( request, instance_name ):
if request.method == 'POST':
form = FeedbackFrom( request.POST )
if form.is_valid():
form.instance.instance_name = instance_name
form.save()
return render("feedback/thanks.html")
else:
return render("feedback/submit.html", {'form':form })
else:
return render("feedback/submit.html",{'form':FeedbackForm()})
@user_passes_test( is_staff )
def all_messages( request, instance_name ):
messages = Feedback.objects.filter( instance_name = instance_name )
return render("feedback/view_all.html",{'feedback':messages} )
在我的mysite.apps.dev.urls
文件中,我放了
url(r'^feedback/', include('mysite.apps.feedback.urls'),
{'instance_name':'dev'}),
在我的mysite.apps.support.urls
文件中,我放了
url(r'^feedback/', include('mysite.apps.feedback.urls'),
{'instance_name':'support'}),
这将按应用实例分隔反馈消息。请注意,我的实际代码更复杂,但这应该足以让任何有类似问题的人快速启动并运行解决方案。希望这对处于类似情况的任何人都有用。再次感谢 Yuji Tomita 提供此解决方案所依据的建议。