0

这里是我的模型和管理类:Django的选择2不与Django的管理内联工作

---------------------Models----------------------- 
from django.contrib.auth.models import User 

class PurchaseOrder(models.Model): 
    buyer = models.ForeignKey(User) 
    is_debit = models.BooleanField(default = False) 
    delivery_address = models.ForeignKey('useraccounts.Address') 
    organisation = models.ForeignKey('useraccounts.AdminOrganisations') 
    date_time = models.DateTimeField(auto_now_add=True) 
    total_discount = models.IntegerField() 
    tds = models.IntegerField() 
    mode_of_payment = models.ForeignKey(ModeOfPayment) 
    is_active = models.BooleanField(default = True) 
    class Meta: 
     verbose_name_plural = "Purchase Orders" 

    def __unicode__(self): 
     return '%s' % (self.id) 

----------------------------------Admin---------------------------------------- 
""" 
This class is used to add, edit or delete the details of item purchased 
""" 
class PurchasedItemInline(admin.StackedInline): 
    form = ItemSelectForm 
    model = PurchasedItem 
    fields = ['parent_category', 'sub_category', 'item', 'qty', ] 
    extra = 10 

class BuyerChoices(AutoModelSelect2Field): 
    queryset = User.objects.all() 
    search_fields = ['username__icontains', ] 

class BuyerForm(ModelForm): 
    user_verbose_name = 'Buyer' 
    buyer = BuyerChoices(
     label='Buyer', 
     widget=AutoHeavySelect2Widget(
      select2_options={ 
      'width': '220px', 
      'placeholder': 'Lookup %s ...' % user_verbose_name 
      } 
     ) 
    ) 

    class Meta: 
     model = PurchaseOrder 
     fields = '__all__' 

""" 
This class is used to add, edit or delete the details of items 
purchased but buyer has not confirmed the items purchased, this class 
inherits the fields of PurchaseOrder derscribing the delivery address of 
buyer , is_debit , total discount , tds and mode of payment 
""" 
class PurchaseOrderAdmin(admin.ModelAdmin): 
    form = BuyerForm 
    #list_display = ['id','buyer','delivery_address','date_time','is_active'] 
    inlines = [PurchasedItemInline] 
    # model = PurchaseOrder 
    #actions = [mark_active, mark_inactive] 
    #list_filter = ['date_time'] 
    #search_fields = ['id'] 
    list_per_page = 20 
    def response_add(self, request, obj, post_url_continue=None): 
     request.session['old_post'] = request.POST 
     request.session['purchase_order_id'] = obj.id 
     return HttpResponseRedirect('/suspense/add_distance/') 

我想实现django-select2,但是当我在 PurchaseOrderAdmin使用内联不显示场在那里我已经实现 django-select2

screenshot1

但是当我删除内联,它工作正常:

screenshot2

编辑

这里是ItemSelectForm

class ItemSelectForm(forms.ModelForm): 
    class Media: 
     js = (
      'http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js', 
      'js/ajax.js', 
     ) 

    try: 
     parent_category = forms.ModelChoiceField(queryset=Category.objects.\ 
      filter(parent__parent__isnull=True).filter(parent__isnull=False)) 

     sub_category_id = Category.objects.values_list('id',flat=True) 
     sub_category_name = Category.objects.values_list('name',flat=True) 
     sub_category_choices = [('', '--------')] + [(id, name) for id, name in 
     itertools.izip(sub_category_id, sub_category_name)] 
     sub_category = forms.ChoiceField(sub_category_choices) 
    except: 
     pass 

    item = forms.ModelChoiceField(queryset = Product.objects.all()) 

    def __init__(self, *args, **kwargs): 
     super(ItemSelectForm, self).__init__(*args, **kwargs) 
     self.fields['parent_category'].widget.attrs={'class': 'parent_category'} 
     self.fields['sub_category'].widget.attrs={'class': 'sub_category'} 
     self.fields['item'].widget.attrs={'class': 'item'} 
+0

你可以添加ItemSelectForm的代码吗? – fceruti 2014-08-29 15:37:02

+0

我已经添加了ItemSelectForm的代码,请参阅。 – 2014-08-30 05:05:10

+0

好吧,它似乎有些js(也许是js/ajax.js)正在破坏select2的mojo。也许你可以在这两种情况下发布来自开发工具的任何日志或呈现的html。 – fceruti 2014-09-01 01:26:57

回答

0

它通过添加以下行静态/西装为我工作/ JS/suit.js

地址:

(function ($) { 
    Suit.after_inline.register('init_select2', function(inline_prefix, row){ 
     $(row).find('select').select2(); 
    });