Django formset初始数据 - 如何指定ForeignKeyFields的值?

时间:2015-12-11 11:12:30

标签: python django django-forms foreign-keys django-admin

我使用自定义内联Ip成功初始化了字段FormSet的值:

# http://stackoverflow.com/a/24462173/129805
class PrepopulatedIpInlineFormSet(forms.models.BaseInlineFormSet):
    model = Ip

    def __init__(self, *args, **kwargs):
        super(PrepopulatedIpInlineFormSet, self).__init__(*args, **kwargs)
        apn_ggsns = ApnGgsn.objects.all()
        initial = []
        for apn_ggsn in apn_ggsns:
            print apn_ggsn.cidr
            cidr = IPNetwork(apn_ggsn.cidr)
            print cidr
            for ip in cidr:
                # skip .0 and .255 addresses
                ipstr = str(ip)
                print ipstr[-2:]
                if ipstr[-2:] == '.0' or ipstr[-4:] == '.255':
                    continue
                print ipstr
                num = Ip.objects.filter(ip=ipstr).count()#, apnid=apn_ggsn.apn_id, ggsn_id=apn_ggsn.ggsn_id).count()
                if num == 0:
                    initial.append({'ip': ipstr, 'apn': apn_ggsn.apn, 'ggsn': apn_ggsn.ggsn})
                    break
        self.initial = initial

正在使用下一个免费IP地址在管理表单上正确填充ip字段。正确生成多个内联表单/对象。

我无法让<select>显示正确的初始值。

我尝试过将_id后缀添加到字典键并使用实际对象和对象的id作为值的每种组合。

<select>框永远不会显示初始selected值。

文档显示了示例,但未显示ForeignKeyField s。

https://docs.djangoproject.com/en/1.9/topics/forms/formsets/#using-initial-data-with-a-formset

我做错了什么?

1 个答案:

答案 0 :(得分:0)

这是一个浏览器刷新错误。当我打开一个新标签页时,它都按预期工作。

相关问题