0

これは、djangoの初心者であることを理解しようとしている私の問題です

  1. user都市テーブルが外部キーを使用して国テーブルに接続されていることを知って、アプリで国を取得したい。ユーザー テーブルには city_id 列があります。ユーザーはすでにログインしていることに注意してください。都市は取得していますが、国は取得していません。

  2. その後、instructorアプリで、国列 currency_id に接続されている通貨を取得します。

これは私が持っているものです。

/instructors/model.py

from django.db import models
from locations.models import City, Country

class Class(models.Model):
   ...
   city = models.ForeignKey(City, null=True, blank=True)


class Currency(models.Model):
    name = models.CharField(max_length=20)
    symbol = models.CharField(max_length=7, help_text="Code HTML")
    initials = models.CharField(max_length=5, help_text="e.g. : CLP (Chilean Pesos)")

    class Meta:
        verbose_name_plural = "currencies"

    def __unicode__(self):
        return self.name

    def get_label(self):
        return '%s (%s)' % (self.symbol, self.initials)

/users/model.py

class User(AbstractUser):
    ...
    city = models.ForeignKey(City, blank=True, null=True, db_index=True)
    ...

    def get_locality(self):
        locality = ''
        if self.location:
            locality = '%s, %s, %s' % (self.location.name, self.location.city.name, self.city.country.name)
        elif self.city:
            locality = '%s, %s' % (self.city.name, self.city.country.name)
        return locality

/locations/model.py

from django.db import models

class Country(models.Model):
    code = models.CharField(max_length=3)
    name = models.CharField(max_length=100)
    order = models.IntegerField(default=0)
    currency_id = models.IntegerField(max_length=3)

    class Meta:
        verbose_name_plural = "countries"

    def __unicode__(self):
        return self.name


class City(models.Model):
    country = models.ForeignKey(Country)
    name = models.CharField(max_length=100)
    order = models.IntegerField(default=0)

    class Meta:
        verbose_name_plural = "cities"

    def __unicode__(self):
        return "%s, %s" % (self.name, self.country)


class Location(models.Model):
    city = models.ForeignKey(City)
    name = models.CharField(max_length=100)

    class Meta:
        verbose_name_plural = "locations"

    def __unicode__(self):
        return "%s, %s" % (self.name, self.city)
4

0 に答える 0