django从管理页面中的另一个模型中填充模型字段,而没有ForeignKey

问题描述

我在MysqL中有两个表,下面是两个表的创建语句。

CREATE TABLE `test` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,`reportname` VARCHAR(50) NULL DEFAULT NULL,PRIMARY KEY (`id`)
);
CREATE TABLE `test1` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,`User ID` VARCHAR(30) NOT NULL,`Report` VARCHAR(20) NOT NULL,PRIMARY KEY (`id`)
);

test table contents

test1 table contents

下面是models.py的代码

class Test(models.Model):
    reportname = models.CharField(db_column='reportname',max_length=50)

    class Meta:
        managed = False
        db_table = 'test'

class Test1(models.Model):
    ACTION_CHOICES =(
        ( 'report1','report1' ),( 'report2','report2' ),( 'report3','report3'),)
    user_id = models.CharField(db_column='User ID',max_length=30)
    report = models.CharField(db_column='Report',max_length=20,choices=ACTION_CHOICES)

    def __unicode__(self):
        return self.user_id

    class Meta:
        managed = False
        db_table = 'test1'

下面是admin.py的代码

class Test1Admin(admin.ModelAdmin):
    search_fields = ['user_id']
    list_display = ('user_id','report')

    def get_search_results(self,request,queryset,search_term):
        queryset,use_distinct = super(Test1Admin,self).get_search_results(
            request,search_term)
        search_words = search_term.split(";")
        if search_words:
            q_objects = [Q(**{field + '__icontains': word.strip()})
                         for field in self.search_fields
                         for word in search_words]
            queryset |= self.model.objects.filter(reduce(or_,q_objects))
        return queryset,use_distinct

admin.site.register(Test1,Test1Admin)

现在,我想要的是Test1模型中的报告下拉列表,该报告当前来自于ACTIVE_CHOICES,来自于管理模型中的Test Model中的报告名称,如下面的屏幕快照所示。

Admin page screenshot

如果需要更多信息,请告诉我。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)