我对Django有点问题。当我尝试访问特定视图时,我得到标题错误 __ str__返回非字符串(类型DeferredAttribute)。我认为它与我在视图中呈现的表单有关,但我自己无法找到问题。
这是我的模特:
class ItemElements(models.Model):
itemid = models.ForeignKey(Items, on_delete = models.CASCADE)
elementid = models.ForeignKey(Elements, on_delete = models.CASCADE)
percentage = models.IntegerField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
表格:
class ItemElementsForm(forms.ModelForm):
class Meta:
model = ItemElements
fields = ['itemid', 'elementid', 'percentage']
labels = {
'itemid' : 'Item',
'elementid' : 'Element',
'percentage' : 'Percentage'
}
观点:
def addelements(request):
if request.method == 'POST':
form = ItemElementsForm(request.POST)
if form.is_valid():
elementsForm= form.save(commit=False)
elementsForm.save()
return redirect('addelements')
else:
form = ItemElementsForm()
return render(
request,
'add/addelements/index.html',
{'form': form}
)
我无法真正看到问题所在。我从另一个工作表单和视图复制和修改。除此之外,它与其他形式完全相同。
答案 0 :(得分:0)
检查您的型号。你应该有像
这样的东西class ItemElements(models.Model):
itemid = models.ForeignKey(Items, on_delete = models.CASCADE)
elementid = models.ForeignKey(Elements, on_delete = models.CASCADE)
percentage = models.IntegerField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self): #For Python 3, use __unicode__ on Python 2
return str(self.created_at)
答案 1 :(得分:0)
好吧,显然我发现了这个问题。我所要做的就是在模型上创建一个主键。
primaryid = models.AutoField(primary_key = True)