首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-ajax-selects引发异常对象,但在许多管理程序内联中找不到。

django-ajax-selects引发异常对象,但在许多管理程序内联中找不到。
EN

Stack Overflow用户
提问于 2013-12-02 15:50:18
回答 1查看 313关注 0票数 1

我正在使用Django -ajax-select来方便Django管理中的用户输入;特别是在许多到多个关系中,‘直通’模型是内联的:

models.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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><i>%s</i></dev>" % (escape(obj.item_code), escape(obj.name))

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

setting.py

代码语言:javascript
复制
AJAX_LOOKUP_CHANNELS = {
    'item_code': ('appname.lookups', 'PartLookup'),
}

现在一切都很好(在服务管理中选择许多部分),直到我点击了保存;我得到了以下例外:

appname.lookups.PartLookup对象在0x7f28742e5fd0>上找不到对象:6965933

6965933是我在服务管理中选择的部分的代码.

我不明白是什么导致了这个异常。

感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2013-12-03 15:08:54

结果表明,该问题是由于零件模型中没有自动标识作为主键造成的。一旦我通过修改数据库并将item_code修改为唯一而不是主键,添加了自动主键,问题就解决了。

在以上所述之后,您需要处理与部件模型相关的模型,因为该关系是使用item_code而不是新添加的id引用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20332266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档