Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как правильно создать объект имеющий связь с другим объектом? [RSS Feed]

#1 Сен. 22, 2014 13:15:46

trulyalya
Зарегистрирован: 2014-09-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно создать объект имеющий связь с другим объектом?

у меня есть таблица User и Note. каждый объект note содержит ссылку на объект user. У меня возникает ошибка при попытки создания второго объекта note, первый экземпляр для зарегистрированного пользователя создается без проблем, а вот дальше он не хочет создавать.

from django.db import models
from django.contrib.auth.models import User
class Note(models.Model):
        title = models.CharField(max_length=200)
    content = models.CharField(max_length=200)
    user = models.ForeignKey(User, unique=False)
def new_note(request):
    if request.method == 'POST':
        f = New_Note(request.POST)
        if f.is_valid():
            title = f.cleaned_data['title']
            content = f.cleaned_data['content']
            new = Note.objects.create(title=title,content=content,user=request.user)
            new.save();
            return HttpResponseRedirect(reverse('note:index'))
    else:
        f = New_Note()
    return render(request, 'note/new_note.html', {'f': f})

и при попытке создания второго объекта возникает такая ошибка
column user_id is not unique

Если же исправляю модель на
user = models.ForeignKey(User)
то ошибка
Cannot assign "<django.utils.functional.SimpleLazyObject object at 0x00000000038FB9B0>": "Note.user" must be a "User" instance.Cannot assign "<django.utils.functional.SimpleLazyObject object at 0x00000000038FB9B0>": "Note.user" must be a "User" instance.

Подскажите пожалуйста как исправить.
вот что в бд лежит
 "id" integer NOT NULL PRIMARY KEY,
"title" varchar(200) NOT NULL,
"content" varchar(200) NOT NULL,
"user_id" integer NOT NULL REFERENCES "auth_user" ("id")

Офлайн

#2 Сен. 22, 2014 13:24:29

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как правильно создать объект имеющий связь с другим объектом?

        f = New_Note(request.POST)
        if f.is_valid():
            title = f.cleaned_data['title']
            content = f.cleaned_data['content']
            new = Note.objects.create(title=title,content=content,user=request.user)
            new.save()

f = New_Note(request.POST)
if f.is_valid():
    new = f.save()



Офлайн

#3 Сен. 22, 2014 13:32:12

trulyalya
Зарегистрирован: 2014-09-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно создать объект имеющий связь с другим объектом?

FishHook
new = f.save()
не поняла вас… у меня же объект состоит из трех элементов , в форме только два поля отображаются

Офлайн

#4 Сен. 22, 2014 13:34:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как правильно создать объект имеющий связь с другим объектом?

trulyalya
не поняла вас… у меня же объект состоит из трех элементов , в форме только два поля отображаются
f = New_Note(request.POST)
if f.is_valid():
    new = f.save(commit=False)
    new.user = request.user
    nerw.save(commit=True)



Офлайн

#5 Сен. 22, 2014 13:47:19

trulyalya
Зарегистрирован: 2014-09-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно создать объект имеющий связь с другим объектом?

FishHook
возникает ошибка
'New_Note' object has no attribute 'save'

Офлайн

#6 Сен. 22, 2014 13:59:58

trulyalya
Зарегистрирован: 2014-09-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно создать объект имеющий связь с другим объектом?

проблема в том, что он почему то считает что foreign key уникальный. в чем проблема я не понимаю… первый объект прекрасно создается и сохраняется в бд

Офлайн

#7 Сен. 22, 2014 14:56:10

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как правильно создать объект имеющий связь с другим объектом?

модель покажите



Офлайн

#8 Сен. 22, 2014 15:23:55

trulyalya
Зарегистрирован: 2014-09-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно создать объект имеющий связь с другим объектом?

from django.db import models
from django.contrib.auth.models import User
class Note(models.Model):
    
    title = models.CharField(max_length=200)
    content = models.CharField(max_length=200)
    user = models.ForeignKey(User, unique=False)
[code python][/code]

Офлайн

#9 Сен. 22, 2014 15:32:35

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как правильно создать объект имеющий связь с другим объектом?

проблема в том, что он почему то считает что foreign key уникальный. в чем проблема я не понимаю… первый объект прекрасно создается и сохраняется в бд
Где в вашем коде создается первый объект, а где второй? Я вижу создание ождного объекта.



Офлайн

#10 Сен. 22, 2014 15:38:12

trulyalya
Зарегистрирован: 2014-09-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно создать объект имеющий связь с другим объектом?

объект у меня создается в этом методе

def new_note(request):
    if request.method == 'POST':
        f = New_Note(request.POST)
        if f.is_valid():
            title = f.cleaned_data['title']
            content = f.cleaned_data['content']
            new = Note.objects.create(title=title,content=content,user_id=request.user.id)
            new.save();
            return HttpResponseRedirect(reverse('note:index'))
    else:
        f = New_Note()
    return render(request, 'note/new_note.html', {'f': f})
если в бд в таблице Note отсутствует запись у которой id_user равняется id теккущего пользователя, то привыполнении этого метода не приводит к ошибке. а если у текущего пользователя это не первая запись , то вот здесь и происходит ошибка уникальности

Офлайн

  • Начало
  • » Django
  • » Как правильно создать объект имеющий связь с другим объектом?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version