2016-01-05 2 views
0

Я пытаюсь создать некоторые конечные точки службы, которые создают объекты на основе данных, отправленных в URL-адрес. В настоящее время я получаю ошибки, которые говорят, что различные элементы в моей модели, имеющие внешние ключи, у которых нет экземпляра. Как я могу запустить экземпляр или заставить его работать.Django Создать объект без форм из представления с помощью внешних ключей

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'), 

ответ

0

Почему бы ваш попробовать использовать

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

и использует

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

Такая же проблема. Я могу удалить часть userid вместе, и он делает то же самое с «sermonid» из модели Contentdownloadtable. –

+0

@TrentBrown вам нужно создать экземпляр этого 'Countdownloadtable' из' sermonid = request.GET ['sermonid'] 'и передать экземпляр в' timeListened (....., sermomid = sermonidIntace) 'также – pitaside

+0

Я узнал, как это сделать, не создавая экземпляр. Мне любопытно, как создать экземпляр. Я видел, что сделал так много в джанго, ничего не делая с ними. –

0

Все было хорошо, за исключением, что я не хочу, чтобы загрузить экземпляр для объектов, которые имеют внешние ключи - - Мне просто нужно добавить _id к объектам внешнего ключа.

newHistory = timeListened(sermonid_id=sermonid,dateListened=datetime.datetime.now(),username_id=username) 
Смежные вопросы