django-ajax-selects कई व्यवस्थापक इनलाइन में कई लोगों के लिए अपवाद ऑब्जेक्ट नहीं उठाता है

मैं Django व्यवस्थापक में उपयोगकर्ता इनपुट की सुविधा के लिए django-AJAX-selects का उपयोग कर रहा हूं; विशेष रूप से कई से अधिक संबंधों में जहां 'through' मॉडल को रेखांकित किया गया है:

models.py

class Part(models.Model):
    item_code = models.CharField(max_length=100, primary_key=True)
    name = models.CharField('Part Name', max_length=128)

    def __unicode__(self):
        return self.item_code


class Service(models.Model):
    parts = models.ManyToManyField(Part, through='ServicePart')

class ServicePart(models.Model):
    STATE_CHOICES = (
        ('N', 'New'),
        ('U', 'Used'),
    )
    service = models.ForeignKey(Service)
    part = models.ForeignKey(Part)

    cost = models.DecimalField ...
    state = models.CharField(max_length=1, choices=STATE_CHOICES)

admin.py

class ServicePartInline(AjaxSelectAdminTabularInline):

    model = ServicePart

    form = make_ajax_form(ServicePart, {
            #item_code is a lookup channel
            'part': 'item_code', 
             },
           show_help_text=True)

    extra = 2

class ServiceAdmin(admin.ModelAdmin):
    inlines = [ServicePartInline,]

lookups.py

class PartLookup(LookupChannel):

    model = Part

    def get_query(self, q, request):
        return Part.objects.filter(Q(item_code__icontains=q) | Q(name__istartswith=q)).order_by('name')

    def get_result(self, obj):
        return obj.name

    def format_match(self, obj):
        return u"%s<div>%s" % (escape(obj.item_code), escape(obj.name))

    def format_item_desplay(self, obj):
        return u"%s<div>%s" % (escape(obj.item_code), escape(obj.name))

setting.py

AJAX_LOOKUP_CHANNELS = {
    'item_code': ('appname.lookups', 'PartLookup'),
}

Now everything works fine (choosing many parts within the service admin) until I hit save; I get the following exception:

appname.lookups.PartLookup object at 0x7f28742e5fd0> cannot find object:6965933

6965933 is the code of the part I selected inside the service admin ...

I don't understand what is causing this exception.

Your help is appreciated

0

1 उत्तर

यह पता चला कि समस्या मॉडल के कारण प्राथमिक कुंजी के रूप में ऑटो आईडी नहीं है। एक बार जब मैंने डेटाबेस को बदलकर ऑटो संशोधित कुंजी जोड़ा और संशोधित item_code अद्वितीय होने के लिए और प्राथमिक कुंजी नहीं, तो समस्या हल हो गई।

उपर्युक्त के बाद, आपको मॉडल मॉडल का संबंध रखने की आवश्यकता है जो पार्ट मॉडल के साथ संबंध रखते हैं, क्योंकि संबंध को item_code का उपयोग करके संदर्भित किया गया था, न कि नए जोड़े गए आईडी।

0
जोड़ा