models.pyfile in the
climate_changedirectory and enter the following:
# -*- coding: UTF-8 -*- from django.db import models from django.utils.translation import ugettext_lazy as _ from django.conf import settings class Location(models.Model): name = models.CharField(_("name"), max_length=200) location_id = models.CharField( _("location ID"), max_length=20, help_text=_("Location IDs can be retrieved from URLs of weather " "at specific cities at Yahoo! Weather, e.g. GMXX0008 from " "http://weather.yahoo.com/forecast/GMXX0008.html"), ) class Meta: verbose_name=_("location") verbose_name_plural=_("locations") def __unicode__(self): return self.name class WeatherLog(models.Model): location = models.ForeignKey(Location, verbose_name=_("location")) timestamp = models.DateTimeField(_("timestamp")) temperature = models.IntegerField(_("temperature (C°)")) humidity = models.IntegerField(_("humidity (%)")) wind_speed = models.DecimalField( _("wind speed (km/h)"), max_digits=5, decimal_places=2, ) visibility = models.DecimalField( _("visibility (km)"), max_digits=5, decimal_places=2, ) class Meta: verbose_name=_("weather log") verbose_name_plural=_("weather logs") ordering = ("-timestamp",) def __unicode__(self): return "%s @ %s" % ( self.location.name, self.timestamp.strftime("%Y-%m-%dT%H:%M"), )
The models are created. Now let's create the database schema for them.
python manage.py syncdb
Also in this step when asked, I created a superuser called "demo" to be able to access django-contributed administration. Let's try it out. We'll need to add a file
climate_changewith this content:
# -*- coding: utf-8 -*- from django.db import models from django.contrib import admin Location = models.get_model("climate_change", "Location") WeatherLog = models.get_model("climate_change", "WeatherLog") admin.site.register(Location) admin.site.register(WeatherLog)
Then uncomment admin related lines in
urls.pyof the project:
# -*- coding: utf-8 -*- from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() urlpatterns = patterns("", (r"^admin/", include(admin.site.urls)), )
Finally, run the development server and check if the models really work.
python shell runserver # now you can go to http://127.0.0.1:8000/admin/ in a browser
Yes! Everything works as expected for now. I will add my current location and its ID in Yahoo! Weather to the database. For me it's Berlin, Germany and the ID is
GMXX0008. I found the ID in the URL of the page showing the weather for Berlin.
Tomorrow I will show you how to import weather details from Yahoo!