I am trying to fill in the DB table " Notification " through a function as follows :
我的模式:
class NotificationType(models.Model):
type = models.CharField(max_length = 100)
application = models.CharField(max_length = 100)
description = models.CharField(max_length = 1000 , null = True)
class NotificationContent(models.Model):
link_id = models.IntegerField()
unique_content = models.CharField(max_length = 500)
class Notification(models.Model):
person = models.ForeignKey(User)
content_id = models.ForeignKey(NotificationContent)
notification_type_id = models.ForeignKey(NotificationType)
datetime = models.DateTimeField(auto_now_add = True)
is_active = models.BooleanField(default = 1)
read_unread = models.BooleanField( default = 0 )
并且正在利用这一职能,在其它评估中将“通知”发送到:
def crave_form(request):
if request.method == POST :
form = IcraveForm(request.POST)
if form.is_valid():
crave = form.save(commit = False)
crave.person = request.user
crave.save()
send_as_notification_to( crave.person , crave.id , crave.person , icrave , crave )
else:
form = IcraveForm()
return render(request, icrave/form.html , { form : form})
职能定义:
def send_as_notification_to(person , link_id , unique_content , which_app, notification_type ):
notification = Notification(person = person)
notification.content_id.link_id = link_id
notification.content_id.unique_content = unique_content
notification.notification_type_id.type = notification_type
notification.notification_type_id.application = which_app
追踪:
Environment:
Request Method: POST
Request URL: http://localhost:8000/icrave/create/
Django Version: 1.3
Python Version: 2.7.1
Installed Applications:
[ django.contrib.auth ,
django.contrib.contenttypes ,
django.contrib.sessions ,
django.contrib.sites ,
django.contrib.messages ,
django.contrib.comments ,
ec.kiosk ,
ec.chakra ,
ec.ajax ,
ec.broadcast ,
ec.connect ,
ec.seek ,
ec.feed ,
ec.ec_model ,
ec.info ,
ec.domains ,
ec.souk ,
ec.meta ,
ec.shastra ,
ec.chat ,
ec.log ,
ec.icrave ,
ec.notification ,
django.contrib.admin ]
Installed Middleware:
( django.middleware.common.CommonMiddleware ,
django.contrib.sessions.middleware.SessionMiddleware ,
django.middleware.csrf.CsrfViewMiddleware ,
django.contrib.auth.middleware.AuthenticationMiddleware ,
django.contrib.messages.middleware.MessageMiddleware )
Traceback:
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/Volumes/Disk2/workspace/ec/ec/icrave/views.py" in crave_form
16. send_as_notification_to( crave.person , crave.id , crave.person , icrave , crave )
File "/Volumes/Disk2/workspace/ec/ec/notification/api.py" in send_as_notification_to
6. notification.content_id.link_id = link_id
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/fields/related.py" in __get__
301. raise self.field.rel.to.DoesNotExist
Exception Type: DoesNotExist at /icrave/create/
Exception Value: