我从视图中得到一个变量,然后像这样在函数中修改
class labelModelForm(forms.ModelForm):
model = Labels_tool_
fields = ['apn', 'owner_name', 'situs_addr_One', 'situs_addr_Two', 'mailing_addr_One', 'mailing_addr_Two']
apn = forms.ModelChoiceField(queryset=Field.objects.values_list('name', flat=True), empty_label="(Choose field)")
def __init__(self, *args, **kwargs):
//getting layer_id from views
layer_id = kwargs['layer_id']
print layer_id
layer=Layer.objects.filter(id=int(str(layer_id))).first()
x=Field.objects.filter(layer=layer)
//On this step when modify queryset I get error
self.fields['apn'].queryset= Field.objects.filter(layer=layer)
当我这样做时,我得到错误'列表索引必须是整数,而不是str'。那么如何修改查询集呢?
model.py
class Labels_tool_(models.Model):
map_id_labels = models.IntegerField(null=True, blank=False, max_length=255)
apn = models.CharField(null=True, blank=False, max_length=255)
owner_name = models.CharField(null=True, blank=False, max_length=255)
situs_addr_One = models.CharField(null=True, blank=False, max_length=255)
situs_addr_Two = models.CharField(null=True, blank=False, max_length=255)
mailing_addr_One = models.CharField(null=True, blank=False, max_length=255)
mailing_addr_Two = models.CharField(null=True, blank=False, max_length=255)
layer_id_labels = models.IntegerField(null=True, max_length=255)
Model of Field
class Field(models.Model):
TYPE_CHOICES = (
('date', 'Date'),
('datetime', 'Date + Time'),
('number', 'Decimal'),
('url', 'Hyperlink'),
('integer', 'Integer'),
('string', 'Text Line'),
('text', 'Text Block')
)
class Meta:
db_table = 'fields'
ordering = ['map_order']
layer = models.ForeignKey(Layer)
name = models.CharField(max_length=255)
sql_name = models.CharField(max_length=255)
编辑:错误在self.fields['apn'].queryset= Field.objects.filter(layer=layer)
。因为我有这样的字段fields = ['apn', 'owner_name', 'situs_addr_One', 'situs_addr_Two', 'mailing_addr_One', 'mailing_addr_Two']
。这就是列表错误出现的原因。那我该怎么解决呢?你知道吗
试着像这样改变你的姿势
相关问题 更多 >
编程相关推荐