RelatedFieldWidgetCanAdd
This commit is contained in:
@@ -2,8 +2,35 @@
|
||||
from django import forms
|
||||
from django.forms import ModelForm
|
||||
from datetime import date
|
||||
from django.contrib.admin.widgets import AdminDateWidget
|
||||
from asuzr.models import Order
|
||||
from django.contrib.admin.widgets import AdminDateWidget, FilteredSelectMultiple, RelatedFieldWidgetWrapper
|
||||
from django.forms.extras.widgets import Select
|
||||
from django.db.models.fields.related import ManyToOneRel
|
||||
from asuzr.models import *
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.forms import widgets
|
||||
from django.conf import settings
|
||||
|
||||
class RelatedFieldWidgetCanAdd(widgets.Select):
|
||||
|
||||
def __init__(self, related_model, related_url=None, *args, **kw):
|
||||
|
||||
super(RelatedFieldWidgetCanAdd, self).__init__(*args, **kw)
|
||||
|
||||
if not related_url:
|
||||
rel_to = related_model
|
||||
info = (rel_to._meta.app_label, rel_to._meta.object_name.lower())
|
||||
related_url = 'admin:%s_%s_add' % info
|
||||
|
||||
# Be careful that here "reverse" is not allowed
|
||||
self.related_url = related_url
|
||||
|
||||
def render(self, name, value, *args, **kwargs):
|
||||
self.related_url = reverse(self.related_url)
|
||||
output = [super(RelatedFieldWidgetCanAdd, self).render(name, value, *args, **kwargs)]
|
||||
output.append(u'<a href="%s" class="add-another" id="add_id_%s" onclick="return showAddAnotherPopup(this);"> ' % (self.related_url, name))
|
||||
output.append(u'<img src="%sadmin/img/icon_addlink.gif" width="10" height="10" alt="%s"/></a>' % (settings.STATIC_URL, ('Add Another')))
|
||||
return mark_safe(u''.join(output))
|
||||
|
||||
class DateForm (forms.Form):
|
||||
date = forms.DateField(widget = AdminDateWidget, label = u'Дата', initial = date.today)
|
||||
@@ -15,5 +42,24 @@ class DiapDateForm (forms.Form):
|
||||
class OrderForm(ModelForm):
|
||||
class Meta:
|
||||
model = Order
|
||||
fields = ['product', 'price', 'paid', 'address', 'deadline', 'delivery', 'lifting']
|
||||
fields = ['product', 'price', 'paid', 'address', 'designer', 'deadline', 'delivery', 'lifting']
|
||||
|
||||
product = forms.ModelChoiceField(
|
||||
required=False,
|
||||
queryset = Product.objects.all(),
|
||||
widget=RelatedFieldWidgetCanAdd(Product)
|
||||
)
|
||||
|
||||
|
||||
class ProdTableForm(ModelForm):
|
||||
class Meta:
|
||||
model = OrderCosts
|
||||
fields = ['cost_item', 'value']
|
||||
|
||||
cost_item = forms.ModelChoiceField(
|
||||
required=False,
|
||||
queryset = CostItem.objects.all(),
|
||||
widget=RelatedFieldWidgetCanAdd(CostItem)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user