-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
راه حل مشکل inline formset #45
Comments
در مورد پنل ادمین جنگو صحبت میکنید یا یک فرم کاستوم؟ من فرض میکنم در مورد یک فرم کاستوم سوال پرسیدید بنا به هر دلیلی اگه مشکلی در لود شدن فایل های جاواسکریپتی شما وجود داشته باشد، اگر از یک JalaliDateField استفاده میکنید نباید در ذخیره سازی آن مشکلی وجود داشته باشد (در فرم به شکل شمسی وارد میشود و در دیتابیس به شکل میلادی ذخیره میشود)، چرا که از jqueryUi صرفا برای نمایش Datepicker استفاده شده است نه تبدیل تاریخ. پس اگر در تبدیل تاریخ به اشکال میخورد، احتمالا باید داکیومنت ها رو مجددا بررسی فرمایید. همانگونه که در مثال های داکیومنت مشخص هست فایل django_jajali.min.js خودش شامل jquery, jqueryUi, main.js نیز هست. پس در فرم های کاستوم توصیه میشه که یا خودتون این ها رو مطابق با داکیومنت به صورت جداگانه لود کنید یا در انتهای تمپلیت لود کنید تا احتمال کانفلیکت کمتر بشه |
سلام و سپاس از وقتی که گذاشتین و زحمتی که میکشید forms.py class BillForm(forms.ModelForm):
class Meta:
model = Bill
fields = ('pay_date', 'amount', 'bill_number', 'bank_name', 'insurance_id' )
def __init__(self, *args, **kwargs):
super(BillForm, self).__init__(*args, **kwargs)
self.fields['pay_date'] = JalaliDateField(label='تاریخ پرداخت', widget=AdminJalaliDateWidget)
CustomerBillsFormset = inlineformset_factory(Customer, Bill, extra = 2, form = BillForm, ) views.py class CustomerBillsEditView(SingleObjectMixin, FormView):
model = Customer
template_name = 'customers/customer_bills_edit.html'
def get(self, request, *args, **kwargs):
self.object = self.get_object(queryset=Customer.objects.all())
return super().get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
self.object = self.get_object(queryset=Customer.objects.all())
return super().post(request, *args, **kwargs)
def get_form(self, form_class=None):
return CustomerBillsFormset(**self.get_form_kwargs(), instance=self.object)
def form_valid(self, form):
form.save()
messages.add_message(
self.request,
messages.SUCCESS,
'تغییرات ذخیره شدند'
)
return HttpResponseRedirect(self.get_success_url())
def get_success_url(self):
return reverse('accounts:customer_detail', kwargs={'pk': self.object.pk}) customer_bills_edit.html {% extends 'registration/base_admin.html' %}
{% load static %}
{% load widget_tweaks %}
{% load jalali_tags %}
{% load crispy_forms_tags %}
{% block content %}
<form action="" method="POST" enctype="multipart/form-data">
{% for hidden_field in form.hidden_fields %}
{{ hidden_field.errors }}
{{ hidden_field }}
{% endfor %}
{% csrf_token %}
{{ form.management_form }}
{{ form.non_form_errors }}
{% for child_form in form.forms %}
<hr>
<h5>
{% if child_form.instance.id %}
فیش پرداختی: {{ child_form.instance.insurance_id }}
{% else %}
{% if form.forms|length > 1 %}
فیش پرداختی جدید
{% else %}
فیش جدید
{% endif %}
{% endif %}
</h5>
{% for hidden_field in child_form.hidden_fields %}
{{ hidden_field.errors }}
{% endfor %}
<div class="row">
<div class="col-lg-4 col-md-4 col-xs-12">
{{ child_form.pay_date.errors }}
{{ child_form.pay_date | as_crispy_field }}
</div>
<div class="col-lg-4 col-md-4 col-xs-12">
{{ child_form.amount.errors }}
{{ child_form.amount | as_crispy_field }}
</div>
...
{% endfor %}
<button type="submit" value="Update collection" class="btn btn-primary w-100 mb-3">ثبت</button>
<a href="{{ customer.get_absolute_url }}" role="button" class="btn btn-secondary w-100">بازگشت</a>
</p>
</form>
<link rel="stylesheet" href="{% static 'admin/jquery.ui.datepicker.jalali/themes/base/jquery-ui.min.css' %}">
<script src="{% static 'admin/js/django_jalali.min.js' %}"></script>
{{ form.media }}
{% endblock content %} |
من حدس میزنم که مشکل از CustomerBillsEditView هست و نیاز به دیباگ کردن داره. برای دیباگ کردن پیشنهاد میکنم، اول کلا از JalaliDateField استفاده نکنید و چک کنید آیا فرمست به درستی کار میکنه؟ آیا مقادیر غیر معتبر به اون بدید به شما به درستی اررور میده؟ آیا مقادیر به درستی ویرایش یا ایجاد میشن؟ من حدس میزنم که در یکی از این قسمت ها بدون JalaliDateField هم مشکل داره. |
سلام مهندس عزیز |
سلام
وقتی فایل
django_jalali.min.js
قبل از فایل جی کوئری و جی کوئری یو ای در صفحه لود میشه در فرمهای
inline formset
مشکل ذخیره تاریخ بشکل شمسی در دیتا بیس رخ میدهد فکر میکنم چون در تعریف
inline formset
ما از
widgets
استفاده میکنیم جنگو سبب لود شدن زود هنگام
django_jalali.min.js
میشود ممنون میشم اگه برای این مشکل راهنمایی کنید
The text was updated successfully, but these errors were encountered: