Найти - Пользователи
Полная версия: Как правильно создать объект имеющий связь с другим объектом?
Начало » Django » Как правильно создать объект имеющий связь с другим объектом?
1 2
trulyalya
у меня есть таблица 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")
FishHook
        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()
trulyalya
FishHook
new = f.save()
не поняла вас… у меня же объект состоит из трех элементов , в форме только два поля отображаются
FishHook
trulyalya
не поняла вас… у меня же объект состоит из трех элементов , в форме только два поля отображаются
f = New_Note(request.POST)
if f.is_valid():
    new = f.save(commit=False)
    new.user = request.user
    nerw.save(commit=True)
trulyalya
FishHook
возникает ошибка
'New_Note' object has no attribute 'save'
trulyalya
проблема в том, что он почему то считает что foreign key уникальный. в чем проблема я не понимаю… первый объект прекрасно создается и сохраняется в бд
FishHook
модель покажите
trulyalya
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]
FishHook
проблема в том, что он почему то считает что foreign key уникальный. в чем проблема я не понимаю… первый объект прекрасно создается и сохраняется в бд
Где в вашем коде создается первый объект, а где второй? Я вижу создание ождного объекта.
trulyalya
объект у меня создается в этом методе
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 теккущего пользователя, то привыполнении этого метода не приводит к ошибке. а если у текущего пользователя это не первая запись , то вот здесь и происходит ошибка уникальности
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB