我需要一个存储有关一个或多个信息的字段:
详细信息:我需要存储有关背景的信息,可以是图片或颜色。
我应该从models.ImageField还是从models.CharField继承?如果是前者那么我该如何提供将信息存储到数据库并从数据库中检索信息的正确测试?
如果你有这样的例子,请给我一个链接。
答案 0 :(得分:4)
这些数据类型(虽然在技术上是两个字符串)太不同,不能合理地存储在同一列中。您应该只使用两个字段,一个用于图像,另一个用于颜色,并且两者都是可选的(blank=True
)。
然后,您可以覆盖模型的clean
方法以强制其中一个存在:
class MyModel(models.Model):
...
def clean(self):
if not self.image and not self.color.strip():
raise ValidationError('You must specify either an image or color')