これは基本的な質問ですが、私はDjango/Pythonを初めて使っていますが、私が持っている3つのDjangoの書籍(そしてGoogleとStackOverflowを検索しています)たぶん私は間違ったことを探しています。Django ListViewに複数のモデルがあります
model.pyファイルから複数のクラス/モデルを呼び出すリストビューを作成するにはどうすればよいですか?
私は自分のプロジェクトとappと私のモデルを作成しました。モデルは1対多数の関係を使用します。
複数のモデル(このシナリオでは7つのモデル)を使用せずに、単一のモデルを呼び出すことに基づいてリストビューを作成できます。私がリストビューに表示する必要なモデル値が**で示されているとここで
は、私が呼び出したいモデルです:
class TypeAchievement(models.Model):
typeAchievementID = models.AutoField(primary_key=True, db_column="TypeAchievementID")
languageCodeID = models.ForeignKey(LanguageCode, db_column="LanguageCodeID")
**typeAchievementDescriptionIntl = models.CharField(max_length=255, db_column="TypeAchievementDescriptionIntl")**
typeAchievementDescriptionEng = models.CharField(max_length=255, db_column="TypeAchievementDescriptionEng")
typeAchievementAltID = models.IntegerField(db_column="TypeAchievementAltID")
class Meta:
db_table="TypeAchievement"
class RIAchievement(models.Model):
riAchievementID = models.AutoField(primary_key=True, db_column="RIAchievementID")
userLanguageVersionID = models.ForeignKey(UserLanguageVersion, db_column="UserLanguageVersionID")
typeAchievementID = models.ForeignKey(TypeAchievement, db_column="TypeAchievementID")
**riAchievementTypeUserDescription = models.CharField(max_length=255, blank=True, null=True, db_column="RIAchievementTypeUserDescription")**
**riAchievementDescription = models.TextField(max_length=2000, db_column="RIAchievementDescription")**
auth_user_id = models.ForeignKey(auth_user, db_column="auth_user_id")
class Meta:
db_table="RIAchievement"
class UserLanguageVersion(models.Model):
userLanguageVersionID = models.AutoField(primary_key=True, db_column="UserLanguageVersionID")
auth_user_id = models.ForeignKey(auth_user, db_column="auth_user_id")
languageCodeID = models.ForeignKey(LanguageCode, db_column="LanguageCodeID")
class Meta:
db_table="UserLanguageVersion"
class auth_user(models.Model):
**auth_user_id = models.AutoField(primary_key=True, db_column="id")**
username = models.CharField(max_length=30, unique=True, db_column="username")
first_name = models.CharField(max_length=30, db_column="first_name")
last_name = models.CharField(max_length=30, db_column="last_name")
email = models.CharField(max_length=75, db_column="email")
password = models.CharField(max_length=128, db_column="password")
is_staff = models.BooleanField(db_column="is_staff")
is_active = models.BooleanField(db_column="is_active")
is_supervisor = models.BooleanField(db_column="is_supervisor")
last_login = models.DateTimeField(db_column="last_login")
date_joined = models.DateTimeField(db_column="date_joined")
class Meta:
db_table="auth_user"
class LanguageCode(models.Model):
languagecodeID = models.AutoField(primary_key=True, db_column="LanguageCodeID")
**languageCodeDescription = models.CharField(max_length=10, db_column="LanguageCodeDescription")**
baseLanguageCode = models.CharField(max_length=10, db_column="BaseLanguageCode")
languageNameEng = models.CharField(max_length=255, db_column="LanguageNameEng")
altLanguageNameEng = models.CharField(max_length=255, blank=True, null=True, db_column="AltLanguageNameEng")
**languageNameNative = models.CharField(max_length=255, db_column="LanguageNameNative")**
altLanguageNameNative = models.CharField(max_length=255, blank=True, null=True, db_column="AltLanguageNameNative")
**iso639_1 = models.CharField(max_length=10, blank=True, null=True, db_column="ISO639_1")**
iso639_2T = models.CharField(max_length=10, db_column="ISO639_2T")
iso639_2B = models.CharField(max_length=10, db_column="ISO639_2B")
iso639_X = models.CharField(max_length=10, db_column="ISO639_X")
languageDirectionID = models.ForeignKey(LanguageDirection, default=1, db_column="LanguageDirectionID")
class Meta:
db_table="LanguageCode"
class LanguageDirection(models.Model):
languageDirectionID = models.AutoField(primary_key=True, db_column="LanguageDirectionID")
**languageDirectionDescription = models.CharField(max_length=20, db_column="LanguageDirectionDescription")**
**languageDirDescription = models.CharField(max_length=20, db_column="LanguageDirDescription")**
**textAlign = models.CharField(max_length=20, db_column="TextAlign")**
**oppositeLanguageDirectionDescription = models.CharField(max_length=20, db_column="OppositeLanguageDirectionDescription")**
**oppositeLanguageDirDescription = models.CharField(max_length=20, db_column="OppositeLanguageDirDescription")**
**oppositeTextAlign = models.CharField(max_length=20, db_column="OppositeTextAlign")**
class Meta:
db_table="LanguageDirection"
class Flag(models.Model):
flagID = models.AutoField(primary_key=True, db_column="FlagID")
languageCodeID = models.ForeignKey(LanguageCode, db_column="LanguageCodeID")
**flagIconPath = models.CharField(max_length=255, db_column="FlagIconPath")**
flagDescription = models.CharField(max_length=255, db_column="FlagDescription")
flagInformation = models.CharField(max_length=255, db_column="FlagInformation")
class Meta:
db_table="Flag"
ilvar、答えに感謝します。あなたが提供したソリューションは私のために働いていません。余分なフィールドを表示するには、データをインポートする必要がありますか? P.S.私はノートパソコンをフォーマットし、プロジェクトを再構築することを余儀なくされました。そのため、この要求は非常に遅れています。 – user1261774
いいえ、インポートは必要ありません。それはかなり簡単なので、動作するはずです。達成リストをテンプレートにどのように送っているのか、それをテンプレートでどのように反復しているのかを示してください。ここ – ilvar
私は反復午前方法である: {%の場合適量%} {{riachievement.typeAchievementID.typeAchievementDescriptionIntl}} {%ENDFOR%} {%ENDIF% {適量%におけるQ用%} } – user1261774