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