我正在构建一个有两个字段的django模型,只需要其中一个字段。
class course_data(models.Model):
link = models.CharField(max_length = 500, null = True, blank = True)
uploaded_file = models.FileField(upload_to='course_files', null = True, blank = True)
name = models.CharField(max_length = 200, null = True, blank = True)
description = models.TextField(null = True, blank = True)
applies_to = models.ManyToManyField('course')
我希望该条目仅在提供“link”字段或提供“uploaded_file”字段或两者都有效时才有效。我不能使这两个参数都是可选的,因为它们都可以留空。有什么建议?
答案 0 :(得分:3)
这不是您在模型定义中处理的内容。您可以在表单级别处理它,同时创建两个字段required=False
,但检查表单的clean()
方法,其中一个是提供的。
答案 1 :(得分:0)
您可以使用ModelForm并覆盖其clean
方法来获取所需的行为。如果要使用管理员,可以使用ModelAdmin
答案 2 :(得分:0)
您可以覆盖clean
方法:
class course_data(models.Model):
link = models.CharField(max_length = 500, null = True, blank = True)
uploaded_file = models.FileField(upload_to='course_files', null = True, blank = True)
name = models.CharField(max_length = 200, null = True, blank = True)
description = models.TextField(null = True, blank = True)
applies_to = models.ManyToManyField('course')
def clean(self):
if self.link == None and self.uploaded_file is None:
raise ValidationError(_('Fields uploaded_file and link required.'))