0
我有一個模型,可以訪問API和返回JSON數據Django的 - 表單驗證
class Video(models.Model):
url = models.URLField(_('URL'), blank=True)
type = models.CharField(max_length=10, null=True, blank=True)
def get_oembed_info(self, url):
api_url = 'http://api.embed.ly/1/oembed?'
params = {'url': url, 'format': 'json'}
fetch_url = 'http://api.embed.ly/1/oembed?%s' % urllib.urlencode(params)
result = urllib.urlopen(fetch_url).read()
result = json.loads(result)
return result
def get_video_info(self):
url = self.url
result = self.get_oembed_info(url)
KEYS = ('type', 'title', 'description', 'author_name')
for key in KEYS:
if result.has_key(key):
setattr(self, key, result[key])
def save(self, *args, **kwargs):
if not self.pk:
self.get_video_info()
super(Video, self).save(*args, **kwargs)
class VideoForm(forms.ModelForm):
def clean(self):
if not self.cleaned_data['url'] and not self.cleaned_data['slide_url']:
raise forms.ValidationError('Please provide either a video url or a slide url')
return self.cleaned_data
我想在提交表單訪問類型字段,因此,如果類型不是「東西」提出其他像上面的乾淨方法一樣的錯誤。或者我怎樣才能訪問VideoForm類的get_oembed_info方法結果。
解決方案
那麼托馬斯說調用模型的方法清潔,然後做魔術
def clean(self):
self.get_video_info()
if self.type == 'something':
raise ValidationError("Message")
非常感謝托馬斯的幫助。通過調用模型的乾淨方法,它現在可以很好地工作。 –
@AhmadAjmi很高興能幫到你! –