У меня есть форма:
class AdForm(ModelForm):
class Meta:
model = Ad
widgets = {
'title': TextInput(attrs={'class': 'small'}),
'link': TextInput(attrs={'class': 'large'}),
'code': Textarea(attrs={'class': 'limit', 'cols': 60, 'rows': 20}),
'clicks': TextInput(attrs={'class': 'tiny', 'value': 0}),
}
Исходя из:
TYPE_CHOICES = (
('Image', 'Image'),
('Code', 'Code'),
)
SIZE_CHOICES = (
('Leaderboard', 'Leaderboard'),
('Banner', 'Banner'),
('Skyscraper', 'Skyscraper'),
('Square', 'Square'),
)
class Ad(models.Model):
title = models.CharField(max_length=40)
type = models.CharField(max_length=5, choices=TYPE_CHOICES)
size = models.CharField(max_length=11, choices=SIZE_CHOICES)
link = models.URLField(null=True)
media = models.ImageField(null=True, upload_to='ads')
code = models.TextField(null=True, max_length=500)
clicks = models.IntegerField()
created = models.DateTimeField(auto_now_add=True)
expires = models.DateTimeField(null=True)
def __unicode__(self):
return self.name
и, в основном, если указан тип изображения, я хочу, чтобы ссылка и носитель требовались, однако, если это код IТребуется код.Есть ли способ сделать это или принудительно проверить эти поля на основе определенных условий?
Мой текущий метод обработки ниже:
@login_required
def create(request):
if request.POST:
form = AdForm(request.POST)
if form.is_valid():
status = 'Success'
else:
status = 'Failure'
else:
form = AdForm()
status = 'None'
template = loader.get_template('ads/create.html')
context = RequestContext(request, {
'form': form,
'status': status
})
return HttpResponse(template.render(context))
Я посмотрел в документации, но он сказал, чтобы принудительно сохранитьЕсть ли другой способ лучше?Большое спасибо от Джанго Нуб.