该怎么做才能看到该字段的正文?必须有一个Size对象的值,但不能是“ Size object(id)”
我有模特:
from django.db import models
class Good(models.Model):
Name = models.CharField(max_length = 150)
Size = models.ManyToManyField('Size')
def _str_(self):
return self.Name
class Size(models.Model):
size = models.CharField(max_length = 150)
def _str_(self):
return self.size
这是我的表格。py
class GoodGet(forms.ModelForm):
class Meta:
model = Good_Get
Size = forms.ModelChoiceField(queryset = Good.objects.all())
fields = '__all__'
def __init__(self, *args, good_id1=None, **kwargs):
super(forms.ModelForm, self).__init__(*args, **kwargs)
if good_id1 is not None:
obj = Good.objects.filter(id = good_id1)
for good in obj:
good_sizes = good.Size.all()
self.fields['Size'].queryset = good_sizes
因此,我希望用户从Good的尺寸列表中选择尺寸,但是他看不到自己选择的尺寸。 我想我需要对数据库做些事情,不是吗?
答案 0 :(得分:2)
您应该在__str__
[Python-doc]中使用两个连续的下划线,而不要使用 ,例如:_str_
class Good(models.Model):
Name = models.CharField(max_length=150)
Size = models.ManyToManyField('Size')
def __str__(self):
return self.Name
class Size(models.Model):
size = models.CharField(max_length=150)
def __str__(self):
return self.size
正如PEP-8 documentation所说,“ 魔术对象”具有两个连续的前划线和后划线:
__double_leading_and_trailing_underscore__
:位于用户控制的名称空间中的“魔术”对象或属性。例如。__init__
,__import__
或__file__
。请勿发明此类名称;只能按记录使用它们。