django - 如何在模板中更改 ManyToManyField 的视图?
问题描述
我该怎么做才能看到这个领域的主体?必须有 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
这是我的forms.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 的尺码列表中选择尺码,但他看不到他选择的尺码。我想我需要对我的数据库做点什么,不是吗?
解决方案
您应该在[Python-doc]中使用两个连续的下划线,而不是,例如:__str__
_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 文档所说, “魔术对象”有两个连续的前导和尾随下划线:
__double_leading_and_trailing_underscore__
: 存在于用户控制的命名空间中的“神奇”对象或属性。例如__init__
,__import__
或__file__
。永远不要发明这样的名字;仅按记录使用它们。
推荐阅读
- php - 我想返回 JSON 类型但 PHP 什么也不返回
- mongodb - 从 mongodb 导出文件
- r - 有没有办法在 mutate 中包含 Groupby
- php - 将 HTML 链接添加到 PHP 消息数组
- rust - 如何从返回异步的 Vec 闭包中加入_all?
- google-apps-script - Quandl API 在 Google appscript 上返回 HTML 响应
- javascript - 画布绘制触摸未绘制
- python-3.x - 具有多个输入的 Python 字典列表搜索
- node.js - 需要帮助以解决 npm start 错误
- jaxb - 通过 WebServiceGatewaySupport 编组失败并出现 JAXBException: class
在此上下文中也不知道它的任何超类