微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。