سلام
من یه پروژه جنگو دارم که میخوام وقتی کاربر مثلا قیمت رو وارد فیلد اینپوت فرم میکنه اعداد سه تا سه تا جدا شن
یه راهش اینه که با html و جاوا اسکریپت این کار رو انجام بدم ولی چون در اون مورد فک کنم الزامیه که تایپ فیلد تکست باشه برای نمایش هم باید کلی زحمت بکشم و کد بزنم چون intcomma خود جنگو برای تایپ تیکت (charfield ) کار نمیکنه
شما راه حل درست تر و اصولی تری به زهنتون میرسه ؟
فقط دقت کنید که من برای فرم میخوام یپریت بشه ها برای نمایش مشکلی ندارم چون اگه تایپش اینتیجر باشه خود جنگو با thousand seprator جدا میکنه
تشکر
سلام روز بخیر
برای اینکار باید یک فیلد شخصی سازی شده درست کند و از 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)
من جاوا اسکریپت کار نکردم میشه محتویات فایل js رو هم به اشتراک بذارین؟
زحمتتون میشه ببخشید ممنون از پاسختون
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟