Python 从Django中的模型类生成iterable选项元组

Python 从Django中的模型类生成iterable选项元组,python,django,django-models,django-forms,tuples,Python,Django,Django Models,Django Forms,Tuples,我正在处理django模型,我想从模型实例中生成一个元组: model.py class Extra(models.Model): extra_n = models.CharField(max_length=200) extra_price = models.IntegerField(default=0) def __str__(self): return self.extra_n 我期望的输出基于关联表单上的用户条目: choices = (('extr

我正在处理django模型,我想从模型实例中生成一个元组:

model.py

class Extra(models.Model):
    extra_n = models.CharField(max_length=200)
    extra_price = models.IntegerField(default=0)
    def __str__(self):
       return self.extra_n
我期望的输出基于关联表单上的用户条目:

choices = (('extra_price 1','extra_n1'),
           ('extra_price 2','extra_n2'),
           ('extra_price 3','extra_n3')
)

您可以通过以下方式拨打ORM电话:

tuple(Extra.objects.values\u list('Extra\u price','Extra\u n'))

这就是说,Django表单可以与一个基于模型(或过滤查询集,如果您提供的话)进行选择的对象一起工作。

您在
Extra
模型中有一些条目,您希望从
Extra
模型中的所有条目创建元组。是吗?@ShafikurRahman是的,我有一个错误:extras=MultiSelectField(choices=tuple(ex.objects.values\u list('extra\u p','extra\u n'))文件“/Users/pc/Desktop/code 2 copy/venv/lib/python3.5/site packages/django/db/models/manager.py”,第186行,在get raise AttributeError中(无法通过%s实例“%cls”访问管理器。\uuu name\uuuuuu)AttributeError:无法通过额外实例访问管理器您不应该使用
Extra
对象,而是使用
Extra
类。您可以将
.objects
视为静态成员(尽管它有点复杂)@trusted:导入
Extra
类,然后使用
MultiSelectField(choices=tuple(Extra.objects.values\u list('Extra\u p','Extra\u n'))
…如何将模型类导入到同一models.py文件中的另一个模型中?@trusted:不需要。如果在该类之前定义了该类,则该类是“隐式”导入的(它是定义的),如果以后定义它,那么你应该对它重新排序。如果你在函数中引用了类,那么计算会被推迟,因此符号表解析步骤会处理这个问题。
tuple(Extra.objects.values_list('extra_price', 'extra_n'))