forms.py:
from django.db import models
from django import forms
from pset.models import problem , testcases
class problems(forms.ModelForm):
class Meta:
model=problem
fields=['pcode','pdesc']
class testcases(forms.ModelForm):
class Meta:
model=testcases
fields=['pcode','inp','out']
def __init__(self,*args,**kwargs):
super(testcases,self).__init__(*args,**kwargs)
self.fields['pcode']=forms.ChoiceField(choices=get_list())
def get_list() :
tup=((x,x) for x in problem.object.values_list('pcode',flat=True))
return tup
这里有两个模型,一个是问题,另一个是测试用例。 我试图在其中包含一个下拉菜单。 因为它试图从问题模型中包含pcode列。
但不知道为什么会出现错误:
/ setup / add_cases /的AttributeError 类型对象'问题'没有属性' object' 在函数get_list中。
如果需要:
Models.py
from django.db import models
# Create your models here.
class problem(models.Model) :
pcode=models.CharField(max_length=10,unique=True)
pdesc=models.TextField()
def __str__(self) :
return self.pcode
class testcases(models.Model):
pcode=models.CharField(max_length=10)
inp=models.FileField(upload_to='testcases',blank=True)
out=models.FileField(upload_to='testcases',blank=True)
def __str__(self):
return self.pcode
如果遗漏任何细节,道歉。
答案 0 :(得分:3)
这就是这一行的错字:
problem.object.values_list('pcode',flat=True))
你错过了'来自物体。
problem.objects.values_list('pcode',flat=True))
顺便说一下,惯例是将CamelCase用于你的Django模型,并使它们单数而不是复数,例如: Problem
和TestCase
代替problem
和testcases
。
答案 1 :(得分:1)
您只是输错了,在get_list
函数中,它应该是objects
而不是object
。
def get_list() :
tup=((x,x) for x in problem.objects.values_list('pcode',flat=True))
return tup