こんにちは私のシステムには、さまざまなタイプに分類されているユーザーがたくさんいます。私はすべてのそれらのユーザーのアドレスの詳細を保存したい。例えば、ユーザは、学生、学校またはフランチャイジーとすることができる。ここにいるすべてのユーザーは、それらに関連付けられたアドレス情報を持つことができます。このシナリオではDjangoの別のモデルで同じモデルを複数参照する
from django.db import models
from django.contrib.auth.Models import User
class Address(models.Model):
user = models.OneToOneField(User)
address = models.TextField()
class Student(models.Model):
user_id = models.ForeignKey(User)
address = models.ForeignKey(Address)
class School(models.Model):
user_id = models.ForeignKey(User)
address = models.ForeignKey(Address)
contact_person_name = models.CharField(max_length=50)
ユーザモデルに2つの参照がある - それらは同じインスタンスを参照されたいUSER_IDわたり1及びaddress.user介して別の。重複する参照を持つことは悪い習慣ですか?
私はAddressに 'user'という外部キーを残すことを考えましたが、そのアドレスはユーザーなしでは存在できないと思います。これをより良くモデル化するには?
こんにちは@crodjer、ユーザーの経費を保存して分類する全く異なるシナリオで、説明したのと同じ概念をどのように使用できますか?各経費記録はユーザーに関連付けられます。各費用について、ユーザは自分が作成したカテゴリの1つを関連づけなければならない。だから私は 'カテゴリ(ユーザ、名前)'と '費用(ユーザ、金額、カテゴリ)'のようなものを持っています。しかし、ユーザ参照はここで複製されます。共有がないので抽象クラスを使うことはできないと思います。 – Guruprasad
学校の住所と生徒の住所は類似した情報なので、上記の例のように抽象クラスで2つではなく1つのテーブルに格納すべきですか? – Guruprasad