حسام
2 سال پیش توسط حسام مطرح شد
2 پاسخ

thound sepratorدر جنگو و فیلدهای ورودی

سلام
من یه پروژه جنگو دارم که میخوام وقتی کاربر مثلا قیمت رو وارد فیلد اینپوت فرم میکنه اعداد سه تا سه تا جدا شن
یه راهش اینه که با html و جاوا اسکریپت این کار رو انجام بدم ولی چون در اون مورد فک کنم الزامیه که تایپ فیلد تکست باشه برای نمایش هم باید کلی زحمت بکشم و کد بزنم چون intcomma خود جنگو برای تایپ تیکت (charfield ) کار نمیکنه
شما راه حل درست تر و اصولی تری به زهنتون میرسه ؟
فقط دقت کنید که من برای فرم میخوام یپریت بشه ها برای نمایش مشکلی ندارم چون اگه تایپش اینتیجر باشه خود جنگو با thousand seprator جدا میکنه
تشکر


ثبت پرسش جدید
مهدی مشایخی
تخصص : برنامه نویس پایتون - ماشین لرن...
@MahdiMashayekhi 2 سال پیش مطرح شد
0

سلام روز بخیر
برای اینکار باید یک فیلد شخصی سازی شده درست کند و از IntegerField ارث بری بکنه
کد زیر رو بررسی کنید:

from django import forms

class CustomIntegerField(forms.IntegerField):
    widget = forms.TextInput(attrs={'type': 'tel'})

    def __init__(self, *args, **kwargs):
        kwargs['localize'] = True
        super().__init__(*args, **kwargs)

و اینجوری میتونید از این فیلد استفاده کنید:

class MyForm(forms.Form):
    price = CustomIntegerField()

و برای جدا کردن سه تایی باید از یک ویجت شخصی استفاده کنید:

class CustomIntegerFieldWidget(forms.TextInput):
    def format_value(self, value):
        if value is not None:
            return f'{value:,}'
        return super().format_value(value)

    class Media:
        js = ('js/custom_integer_field_widget.js',)

class CustomIntegerField(forms.IntegerField):
    widget = CustomIntegerFieldWidget(attrs={'type': 'tel'})

    def __init__(self, *args, **kwargs):
        kwargs['localize'] = True
        super().__init__(*args, **kwargs)

حسام
تخصص : میکروکنترلرها و الکترونیک دیجی...
@rebel 2 سال پیش مطرح شد
0

من جاوا اسکریپت کار نکردم میشه محتویات فایل js رو هم به اشتراک بذارین؟
زحمتتون میشه ببخشید ممنون از پاسختون


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام