not a valid UUID.

瀏覽次數:819 次
跳到第一則未讀訊息

Benedict Uwazie

未讀,
2020年5月2日 晚上8:38:162020/5/2
收件者:Django users
I added a field called transaction_id in my models.py I want that field to be used to track every transaction on my "DuesLevy" model I imported uuid to this to happen, but each time I migrate I get this error.
How do i prevent this error from occurring each time I migrate (python manage.py migrate) File "C:\Users\Benedict\Miniconda3\envs\django3\lib\site-packages\django\db\models\fields\__init__.py", line 2344, in to_python
params={'value': value},
django.core.exceptions.ValidationError: ["'13615773708697' is not a valid UUID."]

my models.py
trans_id = uuid.uuid4()
trans_str = trans_id.int
pass_trans = str(trans_str)[:12]
cast_trans = int(pass_trans)
class DuesLevy(models.Model):
    class_of_dues = models.CharField(max_length=30default=options.CHOOSE, choices=options.CLASS_OF_DUES, blank=True)
    payment_circle = models.CharField(max_length=30default=options.CHOOSE, choices=options.PAYMENT_CIRCLE)
    payment_option = models.CharField(max_length=30default=options.CHOOSE, choices=options.PAYMENT_OPTION)
    amount = models.DecimalField(max_digits=8decimal_places=2)
    transaction_id = models.(max_length=100, unique=True, null=True, blank=True, editable=False, default=cast_trans)
    payment_channel = models.CharField(max_length=30default=options.CHOOSE, choices=options.PAYMENT_CHANNEL_TYPE)
    payment_date = models.DateField()
    date_recorded = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    description = models.TextField(blank=Truenull=True)

    def __str__(self):
        return self.amount
    
  
    def get_absolute_url(self):
        return reverse('backend:detail_dues'kwargs={'pk'self.id})

Benedict Uwazie

未讀,
2020年5月2日 晚上10:04:502020/5/2
收件者:Django users


On Sunday, 3 May 2020 01:38:16 UTC+1, Benedict Uwazie wrote:
I added a field called transaction_id in my models.py I want that field to be used to track every transaction on my "DuesLevy" model I imported uuid to this to happen, but each time I migrate I get this error.
How do i prevent this error from occurring each time I migrate (python manage.py migrate) File "C:\Users\Benedict\Miniconda3\envs\django3\lib\site-packages\django\db\models\fields\__init__.py", line 2344, in to_python
params={'value': value},
django.core.exceptions.ValidationError: ["'13615773708697' is not a valid UUID."]

my models.py
trans_id = uuid.uuid4()
trans_str = trans_id.int
pass_trans = str(trans_str)[:12]
cast_trans = int(pass_trans)
class DuesLevy(models.Model):
    class_of_dues = models.CharField(max_length=30default=options.CHOOSE, choices=options.CLASS_OF_DUES, blank=True)
    payment_circle = models.CharField(max_length=30default=options.CHOOSE, choices=options.PAYMENT_CIRCLE)
    payment_option = models.CharField(max_length=30default=options.CHOOSE, choices=options.PAYMENT_OPTION)
    amount = models.DecimalField(max_digits=8decimal_places=2)
    transaction_id = models.UUIDField(max_length=100, unique=True, null=True, blank=True, editable=False, default=cast_trans)

Motaz Hejaze

未讀,
2020年5月2日 晚上10:27:462020/5/2
收件者:Django users
default=cast_trans cast_trans = int(pass_trans)
UUID is string not int

--
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/4a1d77cc-d1b8-4bd4-84cd-cd78e6d2eb76%40googlegroups.com.

Benedict Uwazie

未讀,
2020年5月3日 凌晨4:10:282020/5/3
收件者:Django users
Still facing the same issue
To unsubscribe from this group and stop receiving emails from it, send an email to django...@googlegroups.com.

Nomeh Uchenna Gabriel

未讀,
2020年5月3日 清晨6:35:302020/5/3
收件者:Django users
You're trying to shorten the UUID to 12 chars, that's not allowed

... simply change:

'pass_trans = str(trans_str[:12])'

to

pass_trans = str(trans_str)'

Benedict Uwazie

未讀,
2020年5月3日 上午10:48:442020/5/3
收件者:Django users
Thanks for your response I just found out u can't shorten UUID but I needed 12 digits
what I now did was to import  the code below
from random import randint
my_rand = randint(100000000000, 999999999999)
transaction_id = models.CharField(max_length=30, unique=True, null=True, blank=True, editable=False, default=my_rand)

Thanks

Motaz Hejaze

未讀,
2020年5月3日 中午12:23:142020/5/3
收件者:Django users
Great

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/29bdc56f-2a06-4687-9d9e-294b319c1e2e%40googlegroups.com.

Nomeh Uchenna Gabriel

未讀,
2020年5月4日 凌晨4:37:582020/5/4
收件者:Django users
That looks good to you but is definitely a dangerous approach if the "12 digits" should be unique for each QuerySet since "random.random" can return dublicate numbers when called multiple times.

... I suggest you make a function for that or novicely adds the item's 'pk' to the random number making sure that it's still not more than 12 digits

Nomeh Uchenna Gabriel

未讀,
2020年5月4日 凌晨4:48:422020/5/4
收件者:Django users
[CONTINUED]
I just saw "unique=true" on that field

... you may not face the problems of using "random" just yet but must face it at some "random time in the future" - once you see something like this:

>>>: IntegrityError

... then shall you remember my reply.

The best option is to use a well guided function - I could even help you with that if you don't know much about it on my leisure.

回覆所有人
回覆作者
轉寄
0 則新訊息