<p>非常明显的简单愚蠢的解决方案是为每个字段添加一个布尔“show_xxx”,即:</p>
<pre><code>class Foo(models.Model):
user = models.OneToOneField("auth.User")
telephone_number = models.CharField(blank=True, null=True, max_length=10)
show_telephone_number = models.BooleanField(default=True)
image = models.ImageField(upload_to=get_photo_storage_path, null=True, blank=True)
show_image = models.BooleanField(default=True)
</code></pre>
<p>然后在模板中检查<code>show_xxx</code>字段的值:</p>
^{pr2}$
<p>等等。。。在</p>
<p>当然,也可以使用单个整数字段和旧的位掩码技巧:</p>
<pre><code>class Foo(models.Model):
user = models.OneToOneField("auth.User")
telephone_number = models.CharField(blank=True, null=True, max_length=10)
image = models.ImageField(upload_to=get_photo_storage_path, null=True, blank=True)
foo = models.TextField(blank=True)
perms = models.IntegerField(default=0)
SHOW_TEL = 1
SHOW_IMG = 2
SHOW_FOO = 4
def _show(self, flag):
return (self.perms & flag) == flag
def show_telephone_number(self):
return self._show(self.SHOW_TEL)
def show_image(self):
return self._show(self.SHOW_IMG)
def show_foo(self):
return self._show(self.SHOW_FOO)
</code></pre>
<p>但我不确定这真的是一种“优化”。。。你必须手动处理编辑表单中的复选框等。在</p>