0

私は、企業を表すモデル「リスト」と、企業に割り当てることができるさまざまなプロジェクトを表す別のモデル「リード」を持っています。会社は多くのリードに割り当てることができ、多くのリードは他の多くの会社に関連付けることができるため、それらは多対多の関係を介して関連付けられます。モデルを以下に示します。

見込み客は、リスト管理ページにインライン要素として表示されます。また、オブジェクトのリード編集ページへのリンクを直接表示するために使用されるスニペットもあります。これは逆 URL を介して行われます。

問題は、object.id 引数がリード ID に対応するのではなく、他の番号に対応するのに常に間違っていることです。

ここに画像の説明を入力

上の画像では、リード ルックアップ ID は「53」と表示されていますが、実際には 78 です。

ここに画像の説明を入力

#admin.py    
def url_to_edit_object(self,object):
                    #info = (object._meta.app_label, object._meta.module_name)
                    admin_url = reverse('admin:dirapp_lead_change',  args=(object.id,))
                    return u'<a href="%s">Edit</a>' %(admin_url)

リードモデル:

class lead(models.Model):
    slug = models.SlugField(unique=True,blank=True, null=True)
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100, blank=True, null=True)
    business_name = models.CharField(max_length=100,blank=True, null=True)
    email = models.EmailField(max_length=75, blank=True, null=True)
    phone_number = models.CharField(max_length=20, blank=True, null=True)
    address = models.CharField(max_length=150, blank=True, null=True)
    city = models.CharField(max_length=50, blank=True, null=True)
    state = models.CharField(max_length=10, blank=True, null=True)
    zipcode = models.CharField(max_length=5, blank=True, null=True)
    submission_date = models.DateTimeField(auto_now_add=True, blank=True)
    assigned_to = models.ManyToManyField(Listing,blank=True, null=True, related_name="leads")
    requested_software = models.CharField(max_length=50, blank=True, null=True)
    number_of_pos = models.CharField(max_length=2, choices=NO_OF_POS, default='1')
    type_of_business = models.CharField(max_length=30, choices=TYPE_OF_BUSINESS, default='Bar NightClub', blank=True, null=True)
    time_frame = models.CharField(max_length=10, choices=TIME_FRAME, default='1')
    comments = models.TextField(blank=True, null=True)

    def __unicode__(self):
        return self.business_name
    @models.permalink
    def get_absolute_url(self):
        return ('listing_detail', (),
                    {
                        'slug' :self.slug,
                        })

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.business_name)
            super(lead, self).save(*args, **kwargs)

リスト モデル:

class Listing(models.Model):
        """
        Base model for listings 

        """
        STATUS_CHOICES = (
        ('A', 'Active'),
        ('P', 'Pending'),
        )
        status = models.CharField(max_length=1, choices=STATUS_CHOICES, default='P')
        slug = models.SlugField(unique=True,blank=True, null=True)
        submitted_by = models.ManyToManyField(User, blank=True, null=True, related_name="associates")
        title = models.CharField(max_length=120, blank=True, null=True)
        point = models.PointField(geography=True,srid=settings.SRID, blank=True, null=True)
        point2 = models.CharField(max_length=120, blank=True, null=True)
        address = models.CharField(max_length=120, blank=True, null=True)
        city = models.CharField(max_length=60, blank=True, null=True)
        state = models.CharField(max_length=60, blank=True, null=True)
        zipcode = models.CharField(max_length=5, blank=True, null=True)
        industry = models.ManyToManyField(indCat, related_name="category", blank=True, null=True)
        description = models.TextField(blank=True, null=True)
        objects = models.GeoManager()
        tags = TaggableManager(blank=True)
        search = SphinxSearch()

        def __unicode__(self):
                #return "%s %s %s"%(self.title, self.point.x, self.point.y)
                return "%s"%(self.title)
        @models.permalink
        def get_absolute_url(self):
                return ('listing_detail', (),
                    {
                        'slug' :self.slug,
                        })

        def save(self, *args, **kwargs):
                if not self.slug:
                        self.slug = slugify(self.title)
                if not self.point:
                        location = "%s+%s+%s+%s"%(self.address, self.city, self.state, self.zipcode)
                        cord = get_lat_long(location)
                        #x,y = cord.split(",")
                        lat = float(cord[0])
                        lng = float(cord[1])
                        #x = float(lat)
                        #y = float(lng) 
                        self.point = Point(lng,lat)
                        self.point2 = Point(lng,lat)
                super(Listing, self).save(*args, **kwargs)

Dirapp admin.py:

class ListingImageInline(admin.StackedInline):
    model = ListingImage



class AssignedLeads(admin.TabularInline):
        model = lead.assigned_to.through 
        extra = 0
        #list_select_related = True
        def url_to_edit_object(self,object):
                #info = (object._meta.app_label, object._meta.module_name)
                admin_url = reverse('admin:dirapp_lead_change',  args=(object.id,))
                return u'<a href="%s">Edit</a>' %(admin_url)
        url_to_edit_object.allow_tags = True
        list_display = ('business_name','url_to_edit_object',)
        readonly_fields = ('url_to_edit_object',)       
class leadAdmin(admin.ModelAdmin):
    list_editable = ('city', 'state')
    list_display = ('business_name','first_name','last_name','city','state','submission_date')
    list_filter = ('city', 'state','submission_date', 'assigned_to')
    inlines = [leadUpdateInline]
    filter_horizontal = ('assigned_to',)

class ListingAdmin(admin.ModelAdmin):
    prepopulated_fields = {"slug":("title",)}
    inlines = [leadUpdateInline,ListingImageInline, AssignedLeads]
    filter_horizontal = ('submitted_by',)
    class Media:
        js = (settings.STATIC_URL+'tinymce/jscripts/tiny_mce/tiny_mce.js',
                 settings.STATIC_URL+"filebrowser/js/TinyMCEAdmin.js",
                 settings.STATIC_URL+"tinymce/jscripts/tiny_mce/tinymce_setup.js")


class EmailReminderAdmin(admin.ModelAdmin):
        list_filter = ('lead', 'company','email_date_time')

admin.site.register(lead,leadAdmin)
admin.site.register(Listing,ListingAdmin)
admin.site.register(indCat)
admin.site.register(email_reminder, EmailReminderAdmin)
4

1 に答える 1

0

url_to_edit_objectメソッドでobjectは、インスタンスではありません。これLeadは、多対多のデー​​タを格納する中間モデルのインスタンスです。

object.lead_id代わりに使用してください。

于 2013-07-21T16:40:01.490 に答える