Tuesday, November 28, 2017

Re: NOT NULL constraint failed when trying to create form with initial values

That did the trick. There were some minor errors after it, but now there isn't. By the way, I tried this solution before I tried the "initial" solution but it didn't work at that time. Many thanks.

28 Kasım 2017 Salı 02:49:13 UTC+3 tarihinde Matemática A3K yazdı:


On Mon, Nov 27, 2017 at 7:58 PM, Kubilay Yazoğlu . <kyaz...@gmail.com> wrote:
Oh, that's a life saver information. Thanks. I edited my code.
Unfortunately, only thing that has changed is the name of the error which looks like this right now: NOT NULL constraint failed: photo_photo.contest_id

I'm going to take a break and try to solve the problem tomorrow. I appreciate your help.

Alright, for tomorrow then:

I don't usually use "initial" but if you are excluding (or not including) the field in the form, "initial" would not be useful. A workaround would be:

if form.is_valid():
photo = form.save(commit=False)
        photo.contest = random_item
        photo.owner = 'SUMMERSON'
        photo.save()
 

On Tue, Nov 28, 2017 at 1:32 AM, Matemática A3K <matemat...@gmail.com> wrote:


On Mon, Nov 27, 2017 at 7:30 PM, Matemática A3K <matemat...@gmail.com> wrote:


On Mon, Nov 27, 2017 at 7:18 PM, Kubilay Yazoğlu <kyaz...@gmail.com> wrote:
Nice try but I'm still getting this error: 

IntegrityError at /photo/create/

NOT NULL constraint failed: photo_photo.contest_id_id

I tried with both 'contest': random_item  and 'contest_id': random_item.contest_id. (I don't know why you wrote contest instead of contest_id. Field name is contest_id)
That's because what you are passing is empty and the field is required. Are you sure that you have Contest objects?

There is a convention in Django (models and ORM), "object.foreign_key" gives you the object, while "object.foreign_key_id" gives you the id of that object (and is what it is stored in the database). You should name your field only "contest" for avoiding confusions.

Try "contest_id": random_object

 

 

28 Kasım 2017 Salı 01:03:50 UTC+3 tarihinde Matemática A3K yazdı:

items = Contest.objects.all()
random_item = random.choice(items)

if request.method =='POST':
data = {'contest': random_item,
'ownername': 'SUMMERSON',
}
form=PhotoForm(request.POST, initial=data)
if form.is_valid():
photo = form.save() # Instances go in lowercase, otherwise you are doing it to the class
else:
form = PhotoForm()

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/87731060-75a6-44c6-8d1f-56cba6d22278%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.


--
You received this message because you are subscribed to a topic in the Google Groups "Django users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/django-users/EUOXhT4V9Is/unsubscribe.
To unsubscribe from this group and all its topics, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CA%2BFDnhLFdpf0Z%3DwSgtd3b7HTW_5xru7m963W%2Bo-g653RdX4w3Q%40mail.gmail.com.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CALz%3DsVGYzWbk0%3DzoyMDa_3MB3co7CNiez00aX4kSfFOiyN2Mmw%40mail.gmail.com.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/bd20a167-7156-4cd0-b8c4-3c362fa179e7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment