2016-06-12 3 views
0

У меня вопрос о новом проекте, который я создаю. Проще говоря, на веб-сайте есть учетные записи пользователей, и каждый пользователь имеет возможность создать простой абзац. Форма работает отлично, но я не могу присвоить идентификатор пользователя сохраненной форме.Сохранение модели с идентификатором пользователя?

model.py

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 

class Thoughts(models.Model): 
    user = models.ForeignKey(UserProfile, null=True) 
    title = models.CharField(max_length=150, default='') 
    description = models.CharField(max_length=5000, default='') 

forms.py

class ThoughtForm(ModelForm): 
    class Meta: 
     model = Thoughts 
     fields = ['title', 'description'] 

views.py

@login_required(login_url='sign_in') 
def add_thought(request): 
    context = {} 
    populateContext(request, context) 

    user_details = UserProfile.objects.get(user=request.user) 
    context.update(user_details=user_details) 

    if request.method == 'POST': 
    new_thought_form = ThoughtForm(request.POST) 

     if new_thought_form.is_valid(): 
      new_thought_form.save() 
      return HttpResponse('Hurray, saved!') 
    else: 
     new_thought_form = ThoughtForm() 


    c = {'new_thought_form': new_thought_form,} 
    c.update(csrf(request)) 

    return render_to_response('lala/add_new_thought.html', c) 

Всякий раз, когда я пытаюсь добавить "экземпляр = user_details.id", это говорит о том, что Объект 'int' не имеет атрибута '_meta'. Есть предположения?

ответ

3

Вы можете упростить модели путем удаления UserProfile модели:

# models.py 

class Thoughts(models.Model): 
    user = models.ForeignKey(User, on_delete=models.CASCADE) 
    title = models.CharField(max_length=150, default='') 
    description = models.CharField(max_length=5000, default='') 

forms.py Ваш выглядит хорошо.

Меняйте просмотров:

# views.py  

@login_required(login_url='sign_in') 
def add_thought(request): 
    if request.method == 'POST': 
     form = ThoughtForm(request.POST) 
     if form.is_valid(): 
      thought = form.save(commit=False) 
      thought.user = request.user 
      thought.save() 
      return HttpResponse('Hurray, saved!') 
    else: 
     form = ThoughtForm() 
    return render(request, 'lala/add_new_thought.html', { 
     'form': form 
    }) 
+0

Works! Спасибо, поток! – Bob

Смежные вопросы