各ユーザーが経費を入力して自分のカテゴリに分類できる経費追跡アプリケーションを作成したいと考えています。私が使用するモデル定義は次のとおりです。
from django.db import models
from django.contrib.auth.models import User
class Category(models.Model):
user = models.ForeignKey(User, related_name="my_categories")
name = models.CharField(max_length=50)
class Expense(models.Model):
date = models.DateField()
amount = models.IntegerField()
description = models.TextField()
category = models.ForeignKey(Category)
user = models.ForeignKey(User)
各カテゴリはユーザーに関連付ける必要があります。これにより、各ユーザーが経費を入力する際に選択する独自のカテゴリを表示できるようになります。同様の理由で、各経費レコードはユーザーに関連付ける必要があります。しかし、Expense の定義では、User モデルへの 2 つの参照があります。1 つは「user」フィールドから直接、もう 1 つはユーザー参照を持つ「category」フィールドからです。
このような複数の参照は悪いことだと思います。これをモデル化するより良い方法はありますか?カテゴリ参照からユーザーを特定できることは理解していますが、それは遠回しな方法に思えます。