adr*_*edo 5 django many-to-many
我有以下模型:
CURSES=(('python','Python'),('django','Django'),...)
class Asig(models.Model):
...
name = models.CharField(max_length=100, choices=CURSES)
class Profesor(AbstractUser):
...
asigs = models.ManyToManyField(Asig)
Run Code Online (Sandbox Code Playgroud)
然后,当我使用ModelForm渲染表单时,多对多字段使用'python'字符串而不是'Python'来显示自身,此外,当我查看呈现的html编码时,multiselect选项如下所示:
<option value='1'>python</option>
Run Code Online (Sandbox Code Playgroud)
代替
<option value='python'>Python</option>
Run Code Online (Sandbox Code Playgroud)
如果要在模型的__str__, 方法中使用值“Python”,则应使用self.get_name_display()代替self.name:
class Asig(models.Model):
...
name = models.CharField(max_length=100, choices=CURSES)
def __str__(self):
# use @python_2_unicode_compatible or define __unicode__ if using Python 2
return self.get_name_display()
Run Code Online (Sandbox Code Playgroud)
您无法轻松更改多对多字段以value='python'代替value='1'(主键)使用。这就是多对多字段的工作方式。
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |