Skip to content

Commit 17e879c

Browse files
4 - Model Form for Validation
1 parent 593dd42 commit 17e879c

File tree

5 files changed

+67
-2
lines changed

5 files changed

+67
-2
lines changed

src/db.sqlite3

0 Bytes
Binary file not shown.

src/status/admin.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
from django.contrib import admin
22

3+
from .forms import StatusForm
34
from .models import Status
45

5-
admin.site.register(Status)
6+
7+
class StatusAdmin(admin.ModelAdmin):
8+
list_display = ['user', '__str__', 'image']
9+
form = StatusForm
10+
# class Meta:
11+
# model = Status
12+
13+
14+
admin.site.register(Status, StatusAdmin)

src/status/forms.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from django import forms
2+
3+
from .models import Status
4+
5+
class StatusForm(forms.ModelForm):
6+
class Meta:
7+
model = Status
8+
fields = [
9+
'user',
10+
'content',
11+
'image'
12+
]
13+
14+
def clean_content(self, *args, **kwargs):
15+
content = self.cleaned_data.get('content')
16+
if len(content) > 240:
17+
raise forms.ValidationError("Content is too long")
18+
return content
19+
20+
def clean(self, *args, **kwargs):
21+
data = self.cleaned_data
22+
content = data.get('content', None)
23+
if content == "":
24+
content = None
25+
image = data.get("image", None)
26+
if content is None and image is None:
27+
raise forms.ValidationError('Content or image is required.')
28+
return super().clean(*args, **kwargs)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# -*- coding: utf-8 -*-
2+
# Generated by Django 1.11.8 on 2017-12-11 20:32
3+
from __future__ import unicode_literals
4+
5+
from django.db import migrations
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('status', '0001_initial'),
12+
]
13+
14+
operations = [
15+
migrations.AlterModelOptions(
16+
name='status',
17+
options={'verbose_name': 'Status post', 'verbose_name_plural': 'Status posts'},
18+
),
19+
]

src/status/models.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,13 @@ class Status(models.Model): # fb status, instagram post, tweet, linkedin post
2525
objects = StatusManager()
2626

2727
def __str__(self):
28-
return str(self.content)[:50]
28+
return str(self.content)[:50]
29+
30+
class Meta:
31+
verbose_name = 'Status post'
32+
verbose_name_plural = 'Status posts'
33+
34+
35+
36+
37+

0 commit comments

Comments
 (0)