summaryrefslogtreecommitdiff
path: root/recipe/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'recipe/models.py')
-rw-r--r--recipe/models.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/recipe/models.py b/recipe/models.py
new file mode 100644
index 0000000..8463447
--- /dev/null
+++ b/recipe/models.py
@@ -0,0 +1,90 @@
1from django.db import models
2from django.contrib import admin
3from django.db.models import fields
4
5
6class Unit(models.Model):
7
8 class Meta:
9 ordering = ('name',)
10
11 name = fields.CharField(max_length=100)
12 abbreviation = fields.CharField(max_length=10, blank=True, null=True)
13
14 def __unicode__(self):
15 return "{0} ({1})".format(self.name, self.abbreviation)
16
17
18class Recipe(models.Model):
19
20 class Meta:
21 ordering = ('title',)
22
23 title = fields.CharField(max_length=100)
24 slug = fields.SlugField(max_length=150)
25 description = fields.TextField(blank=True, null=True)
26 servings = fields.IntegerField(blank=True, null=True)
27 instructions = fields.TextField()
28 oven_temp = fields.IntegerField(blank=True, null=True)
29 cook_time = fields.IntegerField(blank=True, null=True)
30 prep_time = fields.IntegerField(blank=True, null=True)
31
32
33 def __unicode__(self):
34 return self.title
35
36
37class Ingredient(models.Model):
38
39 class Meta:
40 ordering = ('name',)
41
42 name = fields.CharField(max_length=100, unique=True)
43
44 def __unicode__(self):
45 return self.name
46
47
48class RecipeIngredient(models.Model):
49
50 ingredient = models.ForeignKey(Ingredient)
51 units = models.ForeignKey(Unit)
52 quantity = fields.FloatField()
53 recipe = models.ForeignKey(Recipe)
54
55 def __unicode__(self):
56 return "{0} in {1}".format(self.ingredient.name, self.recipe.title)
57
58
59class UnitAdmin(admin.ModelAdmin):
60
61 list_display = ('name', 'abbreviation')
62 ordering = ('name',)
63
64
65class IngredientInline(admin.TabularInline):
66
67 model = RecipeIngredient
68 extra = 12
69
70
71class RecipeAdmin(admin.ModelAdmin):
72
73 list_display = ('title',)
74 inlines = (IngredientInline,)
75 search_fields = ('title',)
76 prepopulated_fields = { "slug": ("title",) }
77
78
79class IngredientAdmin(admin.ModelAdmin):
80
81 list_display = ('name',)
82 search_fields = ('name',)
83
84
85try:
86 admin.site.register(Unit, UnitAdmin)
87 admin.site.register(Ingredient, IngredientAdmin)
88 admin.site.register(Recipe, RecipeAdmin)
89except admin.sites.AlreadyRegistered:
90 pass