Django使用外键从视图创建没有窗体的对象

时间:2016-01-05 17:29:06

标签: django model views

我尝试创建一些服务端点,根据发送到URL的数据创建对象。目前,我收到的错误是说我的模型中的各个项目都有外键,他们没有启动实例。如何启动实例或使其工作。

Model.py

class timeListened(models.Model):
listenedeventid = models.AutoField(db_column='listenedEventID', max_length=10,primary_key=True)
userid = models.ForeignKey(AuthUser,db_column='userID',blank=False,null=False,max_length=255,default=get_current_user,editable=True)
sermonid = models.ForeignKey(Contentdownloadtable,db_column='sermonID',unique=True,verbose_name='Sermon Name')
dateListened = models.DateTimeField(db_column='dateTimeListened',auto_now=True)
    class Meta:
        managed = True
        db_table = 'timeListened'
        verbose_name = 'Viewed Sermon'
        verbose_name_plural = 'Viewed Sermons'
        app_label = 'web'

service.py

def sermonHistoryAdd(request):
if request.user.is_authenticated():
    if request.GET.get("sermonid","") == "":
        results = 'No Sermon ID passed'
    else:
        sermonid = request.GET.get("sermonid","")
        newHistory = timeListened(sermonid=sermonid,dateListened=datetime.datetime.now(),userid=request.user.id)
        newHistory.save()
        results = 'test'
else:
    results = 'Not Logged In.'
return HttpResponse(results)

我得到的错误信息是:

无法分配" 1":" timeListened.userid"必须是" AuthUser"实例。 如果我带走了userid,我会为sermonid做同样的事情 - 说它必须是" Contentdownloadtable"实例

为什么不允许我创建具有外键的对象。

URLS.py:
url(r'^service/sermonhistory/add/', service.sermonHistoryAdd, name='sermonHistoryAdd'),

2 个答案:

答案 0 :(得分:0)

为什么不尝试使用

userId = model.ForeignKey(User, .....)

并使用

newHistory = timeListened(sermonid=sermonid,dateListened=datetime.datetime.now(),userid=request.user)
newHistory.save()

答案 1 :(得分:0)

除了我不想为具有外键的对象加载实例外,一切都很好 - 我只需要将_id添加到外键对象。

newHistory = timeListened(sermonid_id=sermonid,dateListened=datetime.datetime.now(),username_id=username)