Arrayfield constraint issue in 4.1

94 visualizações
Pular para a primeira mensagem não lida

James Gillard

não lida,
8 de dez. de 2022, 09:20:2508/12/2022
para Django users
I can't yet work out whether this is a Django bug or how I'm using model constraints... Upgraded from 4.0.8 to 4.1.4 and have hit this issue when saving this model in the admin. I'd read in the release notes that these constraints would be validated on model save, and that's the code that's leading to this exception. If it's not something I've done, it seems ArrayField isn't working with this new validation of my condition. The same happens for Q(phone_numbers__len__gte=0), and the error disappears if I comment out this condition. It seems the generated code might be wrong, as I see 12 "%s" and only 11 elements in params. All it's trying to do is ensure that an empty list isn't considered unique.

Here's the failing model:

phone_numbers = ArrayField(models.CharField(max_length=200), default=list, blank=True)

class Meta:
    constraints = [
        models.UniqueConstraint(
           fields=['phone_numbers'],
           condition=~Q(phone_numbers__len=0),
           name='unique_email_phones',
        ),
    ]
)

Screenshot 2022-12-08 at 12.30.35.png

Ryan Nowakowski

não lida,
8 de dez. de 2022, 10:04:4008/12/2022
para django...@googlegroups.com
Might be a bug. Check the release notes for the post 4.0.8 versions to see if anything related changed. File a bug with the simplest example code that demonstrates the issue.

James Gillard

não lida,
10 de dez. de 2022, 11:29:3910/12/2022
para Django users
Thanks for the feedback. I opened a ticket and it was indeed confirmed as a bug: https://code.djangoproject.com/ticket/34205

Manjusha

não lida,
11 de dez. de 2022, 13:02:2411/12/2022
para django...@googlegroups.com
Hello Sir, I need to understand the form.py  file because , what  is the only list you have assigned as default in arrayfield, is it the method list() ?
 

--
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 view this discussion on the web visit https://groups.google.com/d/msgid/django-users/4a8a0941-dd65-4c22-bf16-4e11181794a0n%40googlegroups.com.

James Gillard

não lida,
11 de dez. de 2022, 16:42:5811/12/2022
para Django users
The callable list is indeed assigned as the default for the ArrayField, as documented here: https://docs.djangoproject.com/en/4.1/ref/contrib/postgres/fields/#django.contrib.postgres.fields.ArrayField

The original issue has already had a patch merged, which will be released in 4.1.5, see the fix here: https://docs.djangoproject.com/en/dev/releases/4.1.5/

Manjusha

não lida,
12 de dez. de 2022, 09:45:1612/12/2022
para django...@googlegroups.com
I think default should be assigned like this

 default=[ ] or
default= list()


But I'm junior so may I don't know well

James Gillard

não lida,
12 de dez. de 2022, 09:53:0512/12/2022
para django...@googlegroups.com
I agree it looks odd, but the docs I linked say that list is fine, and here's example from a test inside Django itself: https://github.com/django/django/blob/cb791a2540c289390b68a3ea9c6a79476890bab2/tests/postgres_tests/models.py#L51

 James from Journee
James Gillard
Technical Co-Founder at Journee
Journee, London, United Kingdom
Journee Logo


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/4VDnW7plykw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to django-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAGz3pXL8EHtARE_PLX0MM4jnGWBRq%2BAE-Bc9%2B7dsJtxKHYdnrA%40mail.gmail.com.

Manjusha

não lida,
12 de dez. de 2022, 12:21:0012/12/2022
para django...@googlegroups.com
Yes,I got it !!
I have a doubt about the following link :

I want to ask you about this branches.desktop file.
And I have attached a screenshot.


branches.png
A mensagem foi excluída

rahul sharma

não lida,
13 de dez. de 2022, 05:28:1913/12/2022
para django...@googlegroups.com
Last time i told u give me excess ur laptop 

On Tue, Dec 13, 2022, 15:02 Manjusha <manjushak...@gmail.com> wrote:
Hey anyone reply me.

Manjusha

não lida,
13 de dez. de 2022, 05:40:0213/12/2022
para Django users
I am not understanding what you are telling.

rahul sharma

não lida,
13 de dez. de 2022, 05:43:4513/12/2022
para django...@googlegroups.com
What error tell me??

Responder a todos
Responder ao autor
Encaminhar
0 nova mensagem